diff options
author | Vipul A M <vipulnsward@gmail.com> | 2016-09-05 12:05:00 +0530 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-09-05 12:05:00 +0530 |
commit | 8065b4531afea08de716bebea01b50ee21a41ecd (patch) | |
tree | 8c061c02529cacc2bc9abc307354125077b01926 /activesupport | |
parent | 9aaf8ca7672d525e1b5d54abc07ae9d589cf4e44 (diff) | |
parent | 951353e4764f8ca0fbcc6e9c799eb815c612e759 (diff) | |
download | rails-8065b4531afea08de716bebea01b50ee21a41ecd.tar.gz rails-8065b4531afea08de716bebea01b50ee21a41ecd.tar.bz2 rails-8065b4531afea08de716bebea01b50ee21a41ecd.zip |
Merge pull request #26392 from y-yagi/chage_descendants_to_public_api
change `Class#descendants` to public API [ci skip]
Diffstat (limited to 'activesupport')
-rw-r--r-- | activesupport/lib/active_support/core_ext/class/subclasses.rb | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/activesupport/lib/active_support/core_ext/class/subclasses.rb b/activesupport/lib/active_support/core_ext/class/subclasses.rb index 8a21c71a42..10a7c787f6 100644 --- a/activesupport/lib/active_support/core_ext/class/subclasses.rb +++ b/activesupport/lib/active_support/core_ext/class/subclasses.rb @@ -6,7 +6,20 @@ class Class # Test if this Ruby supports each_object against singleton_class ObjectSpace.each_object(Numeric.singleton_class) {} - def descendants # :nodoc: + # Returns an array with all classes that are < than its receiver. + # + # class C; end + # C.descendants # => [] + # + # class B < C; end + # C.descendants # => [B] + # + # class A < B; end + # C.descendants # => [B, A] + # + # class D < C; end + # C.descendants # => [B, A, D] + def descendants descendants = [] ObjectSpace.each_object(singleton_class) do |k| descendants.unshift k unless k == self @@ -14,7 +27,7 @@ class Class descendants end rescue StandardError # JRuby 9.0.4.0 and earlier - def descendants # :nodoc: + def descendants descendants = [] ObjectSpace.each_object(Class) do |k| descendants.unshift k if k < self |