【发布时间】:2017-07-25 06:37:37
【问题描述】:
我正在尝试了解如何使用 Ruby 的 TracePoint API 来捕获特定类(例如“Resolv”)的定义和后续重新定义。我可以使用以下方法捕获 所有 类定义:
TracePoint.trace(:class) do |tp|
require 'pry'; binding.pry # for example
end
但是,我无法使用:class 或:end 参数对其进行过滤,因此我只能捕获Resolv 类。 TracePoint 对象有一个defined_class 属性,但它包含在类定义时谁是自我(即nil,又名(main)),而不是即将处理其定义的类。我也找不到查看正在处理的文件和行的方法。 有一个binding 变量,但它不包含任何变量。
我该怎么做?
【问题讨论】:
-
tp.lineno和tp.path不给你线路和文件吗? -
是的,你是对的。我不知道我是怎么错过的。谢谢。
标签: ruby class tracepoint