Ruby on Rails: обрабатывать предупреждения об устаревании как ошибки или иным образом находить устаревший код?

Недавно я обновился с Rails 2 до Rails 3, и я пытаюсь искоренить весь код, который у меня может быть, который устарел. То, как я это делаю, просто просматривает копию моего сайта, работающего на машине разработки, и просматривает вывод из консоли для предупреждений.

Есть ли способ заставить Rails обрабатывать предупреждения об устаревании как ошибки или иначе более эффективно использовать устаревший код?

Ответ 1

Вы можете настроить поведение устаревших вызовов, установив ActiveSupport::Deprecation.behavior. Это должно быть установлено на Proc, которое принимает сообщение и стоп-код, например. вы можете сделать:

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

Если у вас есть автоматические тесты для вашего приложения, они неоценимы при обновлении версии Rails.