Extended maintenance of Ruby versions 1.8.7 and 1.9.2 ended on July 31, 2014. Read more
# File weakref.rb, line 41 def initialize(orig) @__id = orig.object_id ObjectSpace.define_finalizer orig, @@final ObjectSpace.define_finalizer self, @@final @@mutex.synchronize { @@id_map[@__id] = [] unless @@id_map[@__id] } @@id_map[@__id].push self.object_id @@id_rev_map[self.object_id] = @__id super end
# File weakref.rb, line 53 def __getobj__ unless @@id_rev_map[self.object_id] == @__id Kernel::raise RefError, "Invalid Reference - probably recycled", Kernel::caller(2) end begin ObjectSpace._id2ref(@__id) rescue RangeError Kernel::raise RefError, "Invalid Reference - probably recycled", Kernel::caller(2) end end