我知道我可以使用set_trace_func
来捕捉方法定义的时刻。
set_trace_func ->event, file, line, method, binding, klass{
if event == "c-call" and method == :method_added
# The moment of method definition
end
}
eval("self", binding)
捕获。我可以在上面显示的块中放入什么代码来捕获方法名称?答案 0 :(得分:1)
在set_trace_func
之外,您可以使用Module.method_added
:
class Test
def self.method_added(method_name)
puts "#{method_name} added to #{self}"
end
def foo
"foo"
end
end
$ ruby test.rb
# => foo added to Test
答案 1 :(得分:0)
查看文档。
Kernel.set_trace_func
proc允许您捕获id
参数。这大部分时间都是函数名称。
但是,从您的示例中学习,您还可以使用eval("__method__", binding)
获取当前运行的方法...但我认为这只会获得您在类中定义的方法。