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’