我试图找出如何使用 Ruby 的 TracePoint API 来捕获特定类的定义和随后的重新定义(例如“Resolv”)。我可以使用以下方法捕获所有类定义:
TracePoint.trace(:class) do |tp|
require 'pry'; binding.pry # for example
end
但是,我无法使用其中一个:class
或:end
参数对其进行过滤,因此我只能捕获Resolv
该类。该TracePoint
对象有一个defined_class
属性,但它包含在类定义时是谁(即nil
aka (main)
),而不是即将处理其定义的类。我也找不到查看正在处理的文件和行的方法。有一个binding
变量,但它不包含变量。
我怎样才能做到这一点?