polimorfismo - ruby variavel de instancia




Obter o nome do método atualmente em execução (4)

$0 é a variável para o programa Ruby de nível superior, mas existe um para o método atual?


Ainda melhor do que a minha primeira resposta, você pode usar __method__:

class Foo
  def test_method
    __method__
  end
end

Isso retorna um símbolo - por exemplo :test_method . Para retornar o nome do método como uma string, chame __method__.to_s .

Nota: Isso requer Ruby 1.8.7.


De http://snippets.dzone.com/posts/show/2785 :

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

class Foo
  def test_method
    this_method_name
  end
end

puts Foo.new.test_method    # => test_method

Eu tenho o mesmo problema para recuperar o nome do método no arquivo de visualização. Eu tenho a solução por

params[:action] # it will return method's name

Se você quiser obter o nome do controlador, então

params[:controller] # it will return you controller's name

Para Ruby 1.9+ eu recomendo usar __callee__







metaprogramming