现在 ActiveRecord::Base.silence {} 消失了,我该如何恢复该功能?

Now that ActiveRecord::Base.silence {} is gone, how do I bring back that functionality?

我做了很多空间查询,每次我 运行 查询时都会以日志的形式转储大量文本。这些极大地减慢了我的程序。

我被迫将我的 rails 从“4.0.0”更新为“4.1.2”,并且 ActiveRecord::Base.silence 已完全弃用,因为它不起作用。这是过去的工作方式

ActiveRecord::Base.silence do
  noisy_query
end

当我现在尝试此操作时,出现此错误....

ArgumentError: wrong number of arguments (0 for 1)
from /Users/davidddouglas/.rvm/gems/ruby-1.9.3-p551/gems/activesupport-4.1.2/lib/active_support/core_ext/kernel/reporting.rb:82:in `capture'

在 4.0.0 中它发送了弃用警告,现在脚本无法运行。奇怪的是,该函数仍然被声明,它只是不再工作并且需要某种参数。我尝试传入 nil 并收到此错误:

NoMethodError: undefined method `reopen' for nil:NilClass

我正在寻找一种方法来将旧功能猴子修补回我的程序中,以使我的脚本再次运行。不太担心最佳实践,因为这是我在内部使用的应用程序,几乎没有前端,除了我自己之外还有 0 个用户。

谢谢

silence 移动到 core extension on logger.

从他们的例子来看,

logger = Logger.new("log/development.log")
logger.silence(Logger::INFO) do
  logger.debug("In space, no one can hear you scream.")
  logger.info("Scream all you want, small mailman!")
end