27

谁能告诉我如何在 Rails 3 中消除弃用警告?

我有一些情况会抛出误报。即在 haml 和来自 dynamic_form 插件的 f.error_messages 中使用 - for 循环。

谢谢

4

3 回答 3

58

要使所有弃用警告静音,您可以执行以下操作:

ActiveSupport::Deprecation.silenced = true

这可以放置在初始化程序或特定环境的环境文件中(例如,仅在生产中静音。)

或者对于特定的代码部分,将其包含在一个块中:

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

这适用于 Rails 3 和 4。

于 2010-04-22T13:12:56.703 回答
12

接受的答案不适用于 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!
于 2013-02-18T13:44:26.713 回答
7

Ryan Daigle 写了一篇关于此的文章,其中他还展示了如何拦截弃用警告并对其执行其他操作,例如将其发送到日志文件:

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

于 2011-06-17T13:23:40.263 回答