Как настроить Rails для повышения ошибки, когда он обращается к предупреждению об устаревании?

Я обновляю довольно большое приложение от Rails 3.0 до 3.2 и пытаюсь избавиться от всех предупреждений об устаревании. Мой вопрос не в том, что нужно изменить, чтобы разрешить определенные предупреждения, но как заставить Rails обрабатывать их как исключения, поэтому он будет выгружать трассировку стека в режиме dev, поэтому у меня будет полная трассировка стека, чтобы увидеть, где находится нарушающий код приходящий из. Таким образом, я могу просто использовать свой набор тестов, чтобы найти их все, и убедиться, что они все очищены. Если есть способ заставить rspec выполнить тест, если он регистрирует предупреждение об устаревании, это тоже сработает.

(В случае, если кто-то задается вопросом, причина, по которой я не обновляюсь до рельсов 4.0, заключается в том, что приложение зависит от некоторых драгоценных камней, которые AFAIK еще не полностью готовы для рельсов 4, особенно activerecord-oracle_enhanced-adapter.)

Ответ 1

Предупреждение об устаревании обрабатывается с помощью ActiveSupport:: Deprecation, когда какой-то код хочет показать такое предупреждение, он вызывает

ActiveSupport::Deprecation.warn("some message")

Нет ошибки. Чтобы ответить на ваш вопрос, я боюсь, что вам нужно использовать темный инструмент для патчей обезьян:) В любом случае решение предназначено для использования temp и позже будет удалено.

Update:

OP отметил быстрый и законный метод в комментарии, поэтому исправление обезьян уже не является выбором.

Вот его код:

# config/environments/test.rb
ActiveSupport::Deprecation.debug = true

Ответ 2

В Rails 4 вы можете настроить с помощью

config.active_support.deprecation = :raise

в вашем файле test.rb или development.rb.

Другие доступные методы можно найти в ActiveSupport::Deprecation::Behaviour