Skip to Content Skip to Search

module ActiveSupport::DescendantsTracker

Active Support Descendants Tracker

This module provides an internal implementation to track descendants which is faster than iterating through ObjectSpace.

However Ruby 3.1 provide a fast native +Class#subclasses+ method, so if you know your code won’t be executed on older rubies, including ActiveSupport::DescendantsTracker does not provide any benefit.

Public class methods

Source code GitHub
# File activesupport/lib/active_support/descendants_tracker.rb, line 102
def descendants(klass)
  klass.descendants
end
Source code GitHub
# File activesupport/lib/active_support/descendants_tracker.rb, line 98
def subclasses(klass)
  klass.subclasses
end

Public instance methods

Source code GitHub
# File activesupport/lib/active_support/descendants_tracker.rb, line 107
def descendants
  subclasses = DescendantsTracker.reject!(self.subclasses)
  subclasses.concat(subclasses.flat_map(&:descendants))
end

Definition files