Class: Ruby::Reflection

Inherits:
Object show all
Includes:
AbstractReflection
Defined in:
lib/ruby/reflection.rb,
lib/ruby/reflection/mirror.rb,
lib/ruby/reflection/class_mirror.rb,
lib/ruby/reflection/field_mirror.rb,
lib/ruby/reflection/method_mirror.rb,
lib/ruby/reflection/object_mirror.rb,
lib/ruby/reflection/thread_mirror.rb,
lib/ruby/reflection/stack_frame_mirror.rb,
lib/ruby/reflection/field_mirror/constant_mirror.rb,
lib/ruby/reflection/field_mirror/class_variable_mirror.rb,
lib/ruby/reflection/field_mirror/instance_variable_mirror.rb

Direct Known Subclasses

Maglev::Reflection, Rubinius::Reflection

Defined Under Namespace

Classes: ClassMirror, ClassVariableMirror, ConstantMirror, FieldMirror, InstanceVariableMirror, MethodMirror, Mirror, ObjectMirror, StackFrameMirror, ThreadMirror

Class Method Summary collapse

Instance Method Summary collapse

Methods included from AbstractReflection

included, #reflect, #senders_of

Constructor Details

#initialize(ignored = nil) ⇒ Reflection

Returns a new instance of Reflection.



18
19
# File 'lib/ruby/reflection.rb', line 18

def initialize(ignored = nil)
end

Class Method Details

.codebaseObject



14
15
16
# File 'lib/ruby/reflection.rb', line 14

def self.codebase
  nil.class
end

Instance Method Details

#classesObject



25
26
27
# File 'lib/ruby/reflection.rb', line 25

def classes
  instances_of(Class)
end

#engineObject



49
50
51
# File 'lib/ruby/reflection.rb', line 49

def engine
  Object::RUBY_ENGINE
end

#implementations_of(str) ⇒ Object



57
58
59
# File 'lib/ruby/reflection.rb', line 57

def implementations_of(str)
  mirrors methods.select {|m| m.name.to_s == str.to_s }
end

#instances_of(klass) ⇒ Object



29
30
31
# File 'lib/ruby/reflection.rb', line 29

def instances_of(klass)
  mirrors ObjectSpace.each_object(klass).select {|obj| obj.class == klass }
end

#modulesObject



21
22
23
# File 'lib/ruby/reflection.rb', line 21

def modules
  instances_of(Module)
end

#object_by_id(id) ⇒ Object



33
34
35
36
37
38
39
# File 'lib/ruby/reflection.rb', line 33

def object_by_id(id)
  if obj = ObjectSpace._id2ref(id)
    reflect obj
  else
    nil
  end
end

#platformObject



45
46
47
# File 'lib/ruby/reflection.rb', line 45

def platform
  Object::RUBY_PLATFORM
end

#threadsObject



41
42
43
# File 'lib/ruby/reflection.rb', line 41

def threads
  instances_of(Thread)
end

#versionObject



53
54
55
# File 'lib/ruby/reflection.rb', line 53

def version
  Object.const_get("#{engine.upcase}_VERSION")
end