2

現在Rubyで実行されているメソッドの名前を知る方法はありますか?

編集

たとえばself、現在のクラスを取得するために使用できます。実行中の現在のメソッドを取得する方法はありますか?次のことができる「魔法の方法」はありますか?

def method1
    p "this method's name is " + magicmethod # => this method's name is method1
end
4

2 に答える 2

9

あります__method__

class Test
  def testing
    __method__
  end
end

__method__はであり、Symbolではないことに注意してくださいString

これには、少なくともRuby1.8.7が必要です。

于 2013-03-19T12:09:16.780 に答える
1

以下の方法: :)

p RUBY_VERSION

module Kernel
private
    def method_name
      caller[0] =~ /`([^']*)'/ and $1
    end
end

class Foo
  def test_method
    method_name
  end
end

puts Foo.new.test_method 

出力:

"1.9.3"
test_method
于 2013-03-19T12:31:25.410 に答える