8

このメソッドが呼び出されたときに Ruby メソッドを実装するメソッドのリストを取得する方法はありますか?

例えば:

def foo
  puts "foo"
end

def foo2
  foo
end

「foo2」を呼び出すと、最初の「foo」と2番目の「puts」、およびこれらのメソッドが定義されている対応するファイルが呼び出されることを知りたいです。(「puts」が他のメソッドを呼び出す場合は、それらも知りたいです)

それは可能ですか?「はい」の場合、どのように?私の質問は、メソッドの依存関係を見つけることだと言えます。

4

2 に答える 2

4

set_trace_funcを使用してこれを取得できますが、Ruby は動的であるため、呼び出し順序が出力されるようにメソッドを呼び出すテスト コードも必要になります。

set_trace_func proc { |event, filename, line, id, binding, klass| puts "#{klass}##{id}" }

Ruby 2.0 では、TracePointが優れた代替手段です。

于 2013-08-20T19:49:25.787 に答える