method
subclasses_of
v2.1.0 -
Show latest stable
- Class:
Object
subclasses_of(*superclasses)public
No documentation available.
# File activesupport/lib/active_support/core_ext/object/extending.rb, line 6
def subclasses_of(*superclasses) #:nodoc:
subclasses = []
# Exclude this class unless it's a subclass of our supers and is defined.
# We check defined? in case we find a removed class that has yet to be
# garbage collected. This also fails for anonymous classes -- please
# submit a patch if you have a workaround.
ObjectSpace.each_object(Class) do |k|
if superclasses.any? { |superclass| k < superclass } &&
(k.name.blank? || eval("defined?(::#{k}) && ::#{k}.object_id == k.object_id"))
subclasses << k
end
end
subclasses
end