呼び出しもとの関数名を取得する
組み込み関数「caller」の結果を解析すれば可能です。
# 呼び出しもとの関数名を取得する関数 def function_name # 正規表現は、Rubyのリファレンスのものを拝借してます。 if /^(.+?):(\d+)(?::in `(.*)')?/ =~ caller.first return $3 end end # テスト用クラス。 class Test def foo function_name end end puts Test.new.foo puts function_name
実行結果です。
foo nil