модуль ActiveSupport::DescendantsTracker
Отслеживание потомков Active Support
Этот модуль предоставляет внутреннюю реализацию отслеживания потомков, которая быстрее, чем итерация по ObjectSpace.
Однако Ruby 3.1 предоставляет быстрый собственный метод +Class#subclasses+, поэтому, если вы знаете, что ваш код не будет выполняться на более старых версиях Ruby, включение ActiveSupport::DescendantsTracker не даёт никаких преимуществ.
Публичные методы класса
# File activesupport/lib/active_support/descendants_tracker.rb, line 104 def descendants(klass) klass.descendants end
# File activesupport/lib/active_support/descendants_tracker.rb, line 100 def subclasses(klass) klass.subclasses end
Публичные методы экземпляра
# File activesupport/lib/active_support/descendants_tracker.rb, line 109 def descendants subclasses = DescendantsTracker.reject!(self.subclasses) subclasses.concat(subclasses.flat_map(&:descendants)) end
# File activesupport/lib/active_support/descendants_tracker.rb, line 175 def subclasses DescendantsTracker.subclasses(self) end
© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.