Tbpgr Blog

元エンジニア 人事 tbpgr(てぃーびー) のブログ

Ruby | Kernel | caller

概要

Kernel#caller(start = 1)

詳細

メソッドのコールスタックを配列形式で返却する。
引数のstartに指定した要素数分取得する。
スタックの数を超えたstartを指定した場合はnilを返却する。

サンプルコード
# encoding: utf-8
require 'pp'

class Hoge
  def hoge(index)
    hige(index)
  end

  def hige(index)
    hage(index)
  end

  def hage(index)
    pp caller(index)
  end
end

Hoge.new.hoge(0)
Hoge.new.hoge(1)
Hoge.new.hoge(3)
Hoge.new.hoge(4)
Hoge.new.hoge(5)
出力
["some_path/kernel_caller.rb:14:in `hage'",
 "some_path/kernel_caller.rb:10:in `hige'",
 "some_path/kernel_caller.rb:6:in `hoge'",
 "some_path/kernel_caller.rb:18:in `<main>'"]
["some_path/kernel_caller.rb:10:in `hige'",
 "some_path/kernel_caller.rb:6:in `hoge'",
 "some_path/kernel_caller.rb:19:in `<main>'"]
["some_path/kernel_caller.rb:20:in `<main>'"]
[]
nil