Молчание Предупреждения об отказе в Rails 3

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

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

Спасибо

Ответ 1

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

ActiveSupport::Deprecation.silenced = true

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

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

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

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

Ответ 2

Принятый ответ не работал у меня с Rails 3.2.12. Размещение в среде /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!

Ответ 3

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

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