如何找到Ruby方法依赖项?

p.m*_*los 8 ruby

有没有办法在调用此方法时获取实现Ruby方法的方法列表?

例如:

def foo
  puts "foo"
end

def foo2
  foo
end
Run Code Online (Sandbox Code Playgroud)

我想知道,当调用"foo2"时,它调用第一个"foo"和第二个"puts"以及这些方法定义的相应文件.(如果"put"调用其他方法,我也想知道它们)

那可能吗?如果'是'怎么样?我可以说我的问题是找到方法依赖项.

Max*_*Max 4

您可以使用set_trace_func来获取此信息,但由于 Ruby 是动态的,您还需要测试代码来调用方法,以便打印调用顺序。

set_trace_func proc { |event, filename, line, id, binding, klass| puts "#{klass}##{id}" }
Run Code Online (Sandbox Code Playgroud)

在 Ruby 2.0 中,TracePoint是一个更好的替代方案。