Приглушение предупреждений об устаревании в Rails 3 - PullRequest
26 голосов
/ 22 апреля 2010

Может кто-нибудь сказать мне, как заставить замолчать устаревшие предупреждения в Rails 3?

У меня есть несколько ситуаций, когда он бросает ложные срабатывания. А именно с использованием - для циклов в haml и f.error_messages из плагина dynamic_form.

Спасибо

Ответы [ 3 ]

55 голосов
/ 22 апреля 2010

Чтобы отключить все предупреждения об устаревании, вы можете сделать:

ActiveSupport::Deprecation.silenced = true

Это может быть помещено в инициализатор или в файл среды для конкретной среды (например, для отключения только в производстве, например.)

Или для конкретного раздела кода, заключите его в блок:

ActiveSupport::Deprecation.silence do
  # no warnings for any use of deprecated methods here
end

Это работает для Rails 3 и 4.

12 голосов
/ 18 февраля 2013

Принятый ответ не работал у меня с Rails 3.2.12. Помещая его в файл environment / production.rb или в инициализатор, выдается предупреждение. Мне пришлось поместить его в мой файл config / environment.rb до инициализации приложения:

# Load the rails application
require File.expand_path('../application', __FILE__)

::ActiveSupport::Deprecation.silenced = true if Rails.env.production?

# Initialize the rails application
Notices::Application.initialize!
7 голосов
/ 17 июня 2011

Райан Дейгл написал об этом статью, в которой он также показал, как можно перехватить предупреждение об устаревании и сделать с ним что-то еще, например отправить его в файл журнала:

ActiveSupport::Deprecation.behavior = Proc.new { |msg, stack| MyLogger.warn(msg) }

http://ryandaigle.com/articles/2006/12/4/how-to-turn-deprecation-warnings-off-in-rails

...