Posts Tagged ‘1.8’

Ruby: Getting current method name

Wednesday, October 22nd, 2008

In ruby 1.9 è possibile utilizzare la variabile __method__ per ottenere il nome del metodo attualmente chiamato. In ruby 1.8 non esiste un modo diretto per accedere al nome del metodo ma è possibile accedere alla variabile caller che, tra le altre informazioni, contiene il nome del metodo chiamante (tips trovato su internet). Ecco come creare un metodo funzionante su entrambe le versioni:

def method_name
if RUBY_VERSION.to_f < 1.9
caller[0]=~/`(.*?)’/
$1
else
__method__
end
end

Se chiamerò da un metodo foo() method_name otterò sempre ‘foo’