public Method

Object.subclasses_of(*superclasses)

There's no documentation for this item.

Source Code

# File 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
Comments

Have your say
Please use Textile formatting (click here for a cheat sheet). Use <code/> and <pre/> for code samples.
Click here to login with OpenID to to post comments.