mercoledì 22 ottobre 2008

Ruby: Getting current method name

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'

1 commento:

  1. Fico. C'è un modo per sapere il chiamante del chiamante? Cioè per sapere all'interno di un metodo, da quale metodo siamo stati chiamati?

    Una cosa tipo caller(1) ‥ ?

    Servirebbe ad esempio per salvare informazioni di debugging.

    RispondiElimina