Приглушение предупреждений об устаревании в Rails 3
Может кто-нибудь сказать мне, как заставить замолчать обесценивающие войны в Rails 3?
У меня есть несколько ситуаций, когда он бросает ложные срабатывания. А именно, используя - for циклы в haml и f.error_messages из плагина dynamic_form.
Спасибо
3 ответа
Чтобы отключить все предупреждения об устаревании, вы можете сделать:
ActiveSupport::Deprecation.silenced = true
Это может быть помещено в инициализатор или в файл среды для конкретной среды (например, чтобы заставить замолчать только в производстве.)
Или для определенного раздела кода, заключите его в блок:
ActiveSupport::Deprecation.silence do
# no warnings for any use of deprecated methods here
end
Это работает для Rails 3 и 4.
Принятый ответ не работал для меня с 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!
Райан Дейгл написал статью об этом, в которой он также показал, как можно перехватить предупреждение об устаревании и сделать с ним что-то еще, например отправить его в файл журнала:
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