title: ActiveSupport::DescendantsTracker.descendants not returning descendants
body: <p>This question is similar / related to another stack overflow question about <a href="https://stackoverflow.com/questions/2393697/look-up-all-descendants-of-a-class-in-ruby">Looking up all the descendants of a class in Ruby</a>. A wonderful question full of the information that I was looking for - except that when I drop down into a rails console:</p>
  
  <pre><code>irb(main):001:0&gt; ActiveSupport::DescendantsTracker.descendants(Object)
  =&gt;[]
  irb(main):002:0&gt; ObjectSpace.each_object(Class).select { |klass| klass &lt; Object }
  =&gt; [IRB::Notifier::AbstractNotifier, IRB::Notifier::ErrUnrecognizedLevel, ...]
  </code></pre>
  
  <p>So, why isn't ActiveSupport::DescendantsTracker returning the descendants of Object? What are the differences in the implementation? The <a href="http://api.rubyonrails.org/classes/ActiveSupport/DescendantsTracker.html#method-i-descendants" rel="nofollow noreferrer">documentation for DescendantsTracker</a> suggests that:</p>
  
  <blockquote>
    <p>This module provides an internal implementation to track descendants which is faster than iterating through ObjectSpace.</p>
  </blockquote>
  
  <p>Faster? Ok, it's gotta be faster to return nothing versus something (right?), but it's supposed to return the descendants of the supplied class.</p>