class Class
def descendants
class D < C; end
C.descendants # => [B, A]
class A < B; end
C.descendants # => [B]
class B < C; end
C.descendants # => []
class C; end
Returns an array with all classes that are < than its receiver.
def descendants descendants = [] ObjectSpace.each_object(singleton_class) do |k| next if k.singleton_class? descendants.unshift k unless k == self end descendants end