サブクラスのリストを収集する次のメソッドがあります。さまざまな理由で、 ActiveSupport を使用できませんDescendantsTracker
。
def self.descendants
unless @subclasses
@subclasses = []
ObjectSpace.each_object(Class) do |subclass|
if subclass < self # && other conditions
@subclasses << subclass.to_s.split('::').last
end
end
end
@subclasses
end
ruby 2.3.1 へのアップグレード (これは関係ないかもしれませんが) で、リストには次のように以前は見られなかった値も断続的に含まれるようになりました。
"#<Class:#<FairPlay::TLLV::ProtocolVersionsSupported:0x00000003566730>>"
最初の質問は、これが何を意味するのかということです。最初のポインタに感謝します。
間欠性について - これはテスト (RSpec) でのみ発生し、テストケースが個別に実行されていない場合にのみ発生します。だから私はRSpecを疑っていますが、それでも背後にあるものを知りたいです.
ありがとう!