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

Methods
C
D
I
Class Public methods
clear()
    # File activesupport/lib/active_support/descendants_tracker.rb, line 18
18:     def self.clear
19:       if defined? ActiveSupport::Dependencies
20:         @@direct_descendants.each do |klass, descendants|
21:           if ActiveSupport::Dependencies.autoloaded?(klass)
22:             @@direct_descendants.delete(klass)
23:           else
24:             descendants.reject! { |v| ActiveSupport::Dependencies.autoloaded?(v) }
25:           end
26:         end
27:       else
28:         @@direct_descendants.clear
29:       end
30:     end
descendants(klass)
    # File activesupport/lib/active_support/descendants_tracker.rb, line 11
11:     def self.descendants(klass)
12:       @@direct_descendants[klass].inject([]) do |descendants, _klass|
13:         descendants << _klass
14:         descendants.concat _klass.descendants
15:       end
16:     end
direct_descendants(klass)
   # File activesupport/lib/active_support/descendants_tracker.rb, line 7
7:     def self.direct_descendants(klass)
8:       @@direct_descendants[klass]
9:     end
Instance Public methods
descendants()
    # File activesupport/lib/active_support/descendants_tracker.rb, line 41
41:     def descendants
42:       DescendantsTracker.descendants(self)
43:     end
direct_descendants()
    # File activesupport/lib/active_support/descendants_tracker.rb, line 37
37:     def direct_descendants
38:       DescendantsTracker.direct_descendants(self)
39:     end
inherited(base)
    # File activesupport/lib/active_support/descendants_tracker.rb, line 32
32:     def inherited(base)
33:       self.direct_descendants << base
34:       super
35:     end