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.
     
  
  
  
  
  
  
    
    Methods
    
      
        - D
 
        - 
          
        
 
      
        - S
 
        - 
          
        
 
      
    
  
  
  
    
    
    
    
    
    
      Class Public methods
      
        
          
            
              descendants(klass)
            
            Link
          
          
            
              
            
          
          
          
          
            
            
              
              
                 Source: 
                
                  show
                
                 | 
                
                  on GitHub
                
              
              
                
def descendants(klass)
  klass.descendants
end
               
             
            
           
        
        
          
            
              subclasses(klass)
            
            Link
          
          
            
              
            
          
          
          
          
            
            
              
              
                 Source: 
                
                  show
                
                 | 
                
                  on GitHub
                
              
              
                
def subclasses(klass)
  klass.subclasses
end
               
             
            
           
        
      
    
      Instance Public methods
      
        
          
            
              descendants()
            
            Link
          
          
            
              
            
          
          
          
          
            
            
              
              
                 Source: 
                
                  show
                
                 | 
                
                  on GitHub
                
              
              
                
def descendants
  subclasses = DescendantsTracker.reject!(self.subclasses)
  subclasses.concat(subclasses.flat_map(&:descendants))
end