【发布时间】:2013-05-24 14:40:50
【问题描述】:
这个问题与另一个关于Looking up all the descendants of a class in Ruby 的堆栈溢出问题类似/相关。一个充满了我正在寻找的信息的绝妙问题——除了当我进入 Rails 控制台时:
irb(main):001:0> ActiveSupport::DescendantsTracker.descendants(Object)
=>[]
irb(main):002:0> ObjectSpace.each_object(Class).select { |klass| klass < Object }
=> [IRB::Notifier::AbstractNotifier, IRB::Notifier::ErrUnrecognizedLevel, ...]
那么,为什么 ActiveSupport::DescendantsTracker 不返回 Object 的后代?实施上有什么区别? documentation for DescendantsTracker 建议:
这个模块提供了一个内部实现来跟踪后代,这比遍历 ObjectSpace 更快。
更快?好吧,什么都不返回比什么都快(对吗?),但它应该返回所提供类的后代。
【问题讨论】:
标签: ruby-on-rails ruby