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