由于某种原因(可能是更新的gem),Rails现在正在记录我的所有SQL命令。我运行自动测试,他们在测试期间也被发送垃圾邮件。我该如何关闭它?
我尝试将此添加到config / environments / test.rb但它不起作用。 logger
已经 nil
。
# ActiveRecord::Base.logger = nil
# ActiveRecord::Base.logger.level = 1
Rails 4.0.0
由于某种原因(可能是更新的gem),Rails现在正在记录我的所有SQL命令。我运行自动测试,他们在测试期间也被发送垃圾邮件。我该如何关闭它?
我尝试将此添加到config / environments / test.rb但它不起作用。 logger
已经 nil
。
# ActiveRecord::Base.logger = nil
# ActiveRecord::Base.logger.level = 1
Rails 4.0.0
好的,我找到了。这工作:
config.after_initialize do
ActiveRecord::Base.logger = nil
end
您可以做的另一件事是在运行时调用此代码,它不需要在配置文件中。
例如,如果您输入特定的测试用例
# test/functionals/application_controller_test.rb for example
ActiveRecord::Base.logger = nil
它也可以正常工作,这样你就可以在运行时切换它。如果您只想扼杀几行代码或块,则非常有用。
如果有人想要 其实 淘汰SQL语句日志记录(不改变日志记录级别,同时保持其AR模型的日志记录):
写入日志的行(在Rails 3.2.16中,无论如何)是在lib / active_record / log_subscriber.rb:50中调用'debug'。
该调试方法由ActiveSupport :: LogSubscriber定义。
所以我们可以通过覆盖它来淘汰日志:
module ActiveSupport
class LogSubscriber
def debug(*args, &block)
end
end
end