2015-05-25 88 views
0

我做了很多空间查询,每次运行查询时都会以日志形式转储大量文本。这极大地减慢了我的节目。现在ActiveRecord :: Base.silence {}消失了,我该如何恢复该功能?

我被迫从'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个用户,而不是我自己。

感谢

回答

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 
+0

不,我真的不在乎这一点,因为我从来没有分析我的日志,但将'Logger.new(“日志/ development.log”)'抹去我的以前的日志文件? –

+0

不,它只是实例化一个新的'Logger'对象来追加到你指定的文件。如果出现混淆,那'new'只能这样运行。您可能想要使用在引导时配置的'Rails.logger'。 –

+0

没有为我工作,出现错误:'NoMethodError:未定义的方法'重新打开为零:NilClass' –

相关问题