15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
# File 'lib/wref/implementations/id_class_unique.rb', line 15
def get
return nil if !@class_name || !@id
begin
object = ObjectSpace._id2ref(@id)
rescue RangeError
destroy
return nil
end
object_class_name = object.class.name
if !object_class_name || @class_name != object_class_name.to_sym || @id != object.__id__
destroy
return nil
end
if @unique_id
destroy
return nil if !object.respond_to?(:__wref_unique_id__) || object.__wref_unique_id__ != @unique_id
end
return object
end
|