Приглушение предупреждений об устаревании в 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

Другие вопросы по тегам