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