Ich habe die folgende Methode, um eine Liste von Unterklassen zu sammeln. Aus verschiedenen Gründen kann ich ActiveSupport DescendantsTracker
nicht verwenden.Listing Unterklassen in Ruby 2.3.1
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
Mit Upgrade auf Rubin 2.3.1 (die zwar vielleicht nicht verwandt), begann die Liste mit Unterbrechungen auch Werte enthalten, bevor nicht gesehen, wie diese
"#<Class:#<FairPlay::TLLV::ProtocolVersionsSupported:0x00000003566730>>"
Der erste Frage würde Was bedeutet das? Ich wäre dankbar, wenn der Zeiger anfangen würde.
Re die Intermittenz - das kommt nur in den Tests (RSpec) und nur dann, wenn der Testfall nicht getrennt ausgeführt wird. Also ich vermute RSpec, möchte aber immer noch wissen, was dahinter steckt.
Danke!