我知道可以使用silencer
gem为整个控制器抑制Rails日志记录。但是,某些ActiveRecord请求的SQL输出可以通过将其包装到某些语句中来单独抑制吗?
答案 0 :(得分:4)
<强>沉默强>
我的问题没有具体的答案,但我们使用ActiveRecord::Base.logger.silence
来取消记录器的静音:
ActiveRecord::Base.logger.silence do
# your method here
end
它不适用于特定请求,但适用于您可能希望停止记录的操作。也许你可以延长ActiveRecord::Base
来沉默一个特定的方法?
-
扩展ActiveRecord
也许您可以将我所描述的内容与扩展ActiveRecord混合使用?关于this question的建议是使用ActiveRecord问题。
我从未使用过其中一种 - 如果你觉得适用,可以把一些代码放在一起
答案 1 :(得分:1)
我用这个:
save_for_later = ActiveRecord::Base.logger
ActiveRecord::Base.logger = nil #turns off sql activity
... do stuff...
ActiveRecord::Base.logger = save_for_later
我从未在生产代码btw中做过这件事,只在rake任务中......