Alias direct_descendants as subclasses
This alias overrides Class#subclasses. Thus calls to `subclasses` get a free performance boost when the class extends DescendantsTracker.
This commit is contained in:
parent
3b953da779
commit
8f8aa857e0
|
@ -13,6 +13,7 @@ module ActiveSupport
|
|||
descendants = @@direct_descendants[klass]
|
||||
descendants ? descendants.to_a : []
|
||||
end
|
||||
alias_method :subclasses, :direct_descendants
|
||||
|
||||
def descendants(klass)
|
||||
arr = []
|
||||
|
@ -59,6 +60,7 @@ module ActiveSupport
|
|||
def direct_descendants
|
||||
DescendantsTracker.direct_descendants(self)
|
||||
end
|
||||
alias_method :subclasses, :direct_descendants
|
||||
|
||||
def descendants
|
||||
DescendantsTracker.descendants(self)
|
||||
|
|
|
@ -42,6 +42,12 @@ module DescendantsTrackerTestCases
|
|||
assert_equal_sets [], Child2.direct_descendants
|
||||
end
|
||||
|
||||
def test_subclasses
|
||||
[Parent, Child1, Child2].each do |klass|
|
||||
assert_equal klass.direct_descendants, klass.subclasses
|
||||
end
|
||||
end
|
||||
|
||||
def test_clear
|
||||
mark_as_autoloaded(*ALL) do
|
||||
ActiveSupport::DescendantsTracker.clear
|
||||
|
|
Loading…
Reference in New Issue