2012-05-06 7 views
6

Estoy usando Ruby on Rails 3.2.2 y, para mostrar mensajes de advertencia para fines de desarrollo, estoy usando logger.warn en mi código. Me gustaría recuperar el nombre del método en el que se ejecuta logger.warn para dar salida al nombre del método al archivo de registro.¿Cómo recuperar el nombre del método actual para enviarlo al archivo logger?

class ClassName < ActiveRecord::Base 
    def method_name 
    # Note: This code doesn't work. It is just a sample. 
    logger.warn "I would like to retrieve and display the #{self.class.to_s}##{method_name}" 
    end 
end 

En el archivo de registro me gustaría ver:

me gustaría recuperar y mostrar el nombre de clase # method_name

¿Es posible? Si es así, ¿cómo puedo hacer eso?

+1

posible duplicado de [Obtener el nombre del método que se está ejecutando actualmente en Ruby] (http://stackoverflow.com/questions/199527/get-the-name-of-the-currently-executing-method-in-ruby) –

Respuesta

23
class ClassName < ActiveRecord::Base 
def method_name 
    logger.warn "I would like to retrieve and display the #{self.class.to_s}##{__method__.to_s}" 
end 
end 

esto debería hacer el trabajo.

+1

Las llamadas '.to_s' son superfluas. La interpolación llamará automáticamente a 'to_s'. – Pistos

Cuestiones relacionadas