2011-01-10 13 views
10

Recentemente ho eseguito l'aggiornamento da Rails 2 a Rails 3 e sto cercando di estrapolare tutto il codice che potrei avere che è deprecato. Il modo in cui sto facendo questo è semplicemente navigare su una copia del mio sito in esecuzione su una macchina di sviluppo, e scrutare l'output dalla console per gli avvisi.Ruby on Rails: considera gli avvisi di deprecazione come errori o altrimenti trova codice deprecato?

C'è un modo per far sì che Rails tratti gli avvisi di deprecazione come errori o altrimenti trovi il codice deprecato in modo più efficiente?

risposta

11

È possibile personalizzare il comportamento delle chiamate obsolete impostando ActiveSupport::Deprecation.behavior. Questo dovrebbe essere impostato su un Proc che accetta un messaggio e un callstack, ad es. si potrebbe fare:

ActiveSupport::Deprecation.behavior = Proc.new { |message, callstack| 
    raise message + "\n" + callstack.join("\n ") 
} 

Se avete test per la vostra applicazione questi hanno un valore inestimabile per l'aggiornamento della versione di Rails in uso automatizzato.

+0

Dove si deve trovare "Proc"? –

+1

@ Iván potresti inserire questo file in un file proprio in 'config/initializers', ad es. 'Deprecation.rb'. Nota anche nelle versioni più recenti di Rails, se desideri generare un'eccezione sulle chiamate obsolete, puoi usare 'ActiveSupport :: Deprecation.behavior =: raise' e ​​non è necessario scrivere un' Proc' tu stesso. – mikej

+0

È molto chiaro, soprattutto perché sto usando RoR 5. Grazie a @mikej –