我有以下方法来收集子类列表。由于各种原因,我无法使用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,但仍然想知道背后的原因。
谢谢!
这是class对象的本征类FairPlay::TLLV::ProtocolVersionsSupported
。该对象的ID为0x00000003566730 / 2
。
您是否正在尝试在此类实例上定义一种方法/您正在模拟一个方法?如果您不是或什至不知道该类/对象是什么,建议您在运行时对其进行跟踪。
它很可能与rspec有关,但是可能有很多事情。不是Ruby版本。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句