Ruby の caller メソッドでバックトレースを取得できる
callerとは、バックトレースを取得できるRubyのメソッド
引数には呼び出しの深さを指定することができ、「0」なら現在の場所から、「1」なら呼び出し元から、「2」なら呼び出し元の呼び出し元から、… という意味になります。デフォルトは「1」です。
code:rb
def foo
p caller(0) #=> ["caller.rb:3:in foo'", "caller.rb:6:in <main>'"] end
foo
result
code:rb
$ ruby caller.rb
["caller.rb:3:in foo'", "caller.rb:6:in <main>'"]
callerだと引数が1のときと同じ挙動をするので、呼び出し元の情報が配列に加えられる
caller(0)だと、現在の場所、呼び出し元が呼ばれる