2011-01-10 10 views
10

Niedawno zaktualizowałem z Rails 2 do Rails 3 i próbuję wykorzenić cały kod, który mogę mieć, który jest przestarzały. Sposób, w jaki to robię, to po prostu surfowanie po kopii mojej witryny uruchomionej na maszynie programistycznej i zaglądanie do wyjścia z konsoli w poszukiwaniu ostrzeżeń.Ruby on Rails: Traktuj ostrzeżenia o przestarzałości jako błędy lub w inny sposób znajdź nieaktualny kod?

Czy istnieje sposób na spowodowanie, że Railsy traktują ostrzeżenia o przestarzałości jako błędy lub w inny sposób skuteczniej odnajdują przestarzały kod?

Odpowiedz

11

Możesz dostosować zachowanie wycofanych połączeń, ustawiając ActiveSupport::Deprecation.behavior. Powinno to być ustawione na Proc, które akceptuje wiadomość i stację wywoławczą, np. można zrobić:

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

Jeśli zautomatyzowane testy dla swojej aplikacji te są nieocenione podczas uaktualniania wersji Rails jest używany.

+0

Gdzie musi znajdować się 'Proc'? –

+1

@ Iván można umieścić to w pliku w 'config/inicjalizatory' np. 'deprecation.rb'. Zauważ również, że w nowszych wersjach Railsów, jeśli chcesz podnieść wyjątek w przestarzałych połączeniach, możesz użyć 'ActiveSupport :: Deprecation.behavior =: raise' i nie musisz sam pisać' Proc'. – mikej

+0

To bardzo jasne, zwłaszcza, że ​​używam RoR 5. Dzięki @mikej –