Weak Reference class that allows a referenced object to be garbage-collected. A WeakRef may be used exactly like the object it references.
Usage:
foo = Object.new
foo = Object.new
p foo.to_s # original's class
foo = WeakRef.new(foo)
p foo.to_s # should be same class
ObjectSpace.garbage_collect
p foo.to_s # should raise exception (recycled)
Namespace
- CLASS WeakRef::RefError
Methods
- N
- W
Class Public methods
new(orig)
Link
Creates a weak reference to orig
# File ../ruby/lib/weakref.rb, line 51 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
Instance Public methods