現在のメソッドが呼び出されたメソッドの名前を取得しようとしています
def first_method
my_method
end
def second_method
my_method
end
def my_method
puts "called from: #{method_name}"
end
期待される出力:
"呼び出し元: first_method"
"呼び出し元: last_method"
現在のメソッドが呼び出されたメソッドの名前を取得しようとしています
def first_method
my_method
end
def second_method
my_method
end
def my_method
puts "called from: #{method_name}"
end
期待される出力:
"呼び出し元: first_method"
"呼び出し元: last_method"
def a
c
end
def b
c
end
def c
p caller
end
a
#=> ["/Users/phrogz/Desktop/tmp.rb:2:in `a'", "/Users/phrogz/Desktop/tmp.rb:11:in `<main>'"]
b
#=> ["/Users/phrogz/Desktop/tmp.rb:5:in `b'", "/Users/phrogz/Desktop/tmp.rb:12:in `<main>'"]
caller[0][/`(.+?)'/,1]
最初の名前に一致するような正規表現を使用できます。
この回答には、Ruby 2.0+ 向けのはるかに優れたソリューションがあります。