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

时间:2015-05-25 19:59:59

标签: ruby-on-rails ruby activerecord deprecated silent

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

我被迫更新我的导轨到' 4.1.2'来自' 4.0.0'并且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个用户。

由于

1 个答案:

答案 0 :(得分:1)

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