使用Ruby 2.1.2版

class A
  def foo
    ObjectSpace::trace_object_allocations do
      obj = Object.new
      p "#{ObjectSpace::allocation_class_path(obj)}"
    end
  end
end

A.new.foo #=> "Class"

上面的方法应该返回对象的分配类路径。
但我得到的是一个空字符串而不是“类”。
是方法中的实现错误,还是文档没有更新。
这里是link
谢谢

最佳答案

我想你刚刚在核心发现了一个可能的漏洞。
我已经向开发人员报告了这个问题,bug #9938
我确实怀疑是物体追踪的结果,但需要进一步调查。
更新:
Koichi Sasada(又名ko1)已经确定了原因,并承诺在运行Ruby 2.2时修复。
同时,您可以使用解决方案手动缓存模块中的对象名
lookup_allocation_info
放在对象跟踪代码之前。

关于ruby-on-rails - ObjectSpace#allocation_class_path无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24181789/

10-13 03:57