如何在Rails控制台中隐藏数据库输出?


103

在较新版本的Rails中,我猜从3开始,数据库查询将输出到控制台。在大多数情况下,这很有用,但是当您不想看到它时如何将其隐藏?

Answers:


177

更好的方法是在控制台中输入以下内容:

ActiveRecord::Base.logger.level = 1 

因为它可以防止尝试使用指向设置为nil的记录器的指针带来麻烦(来源:在控制台中禁用Rails SQL登录

重新开启

ActiveRecord::Base.logger.level = 0

31
谢谢。并将其重新打开,ActiveRecord::Base.logger.level = 0
thebenedict

知道如何使用Mongoid做到这一点吗?
Jesse Farmer


9

简短的答案...在文件development.rb中更改或添加的值,config.log_level以便有一行像

config.log_level = :info

1
不,这似乎对控制台中发生的事情没有任何影响。另外,我更喜欢不需要我更改项目文件的解决方案。
罗杰·埃特斯瓦格

好的,该解决方案适用于webrick,但您可能正在使用其他服务器,或者正在生产或测试模式下运行?
madth3 2011年

3
它用于更改日志文件的内容。但是问题是关于Rails控制台,而不是日志文件。
罗杰·埃特斯瓦格

6

来自我的一个朋友:

your_query; nil

1
为了提高您的帖子的质量,请说明您的帖子将如何/为什么解决问题。
米克·麦卡勒姆

7
这将阻止您的ruby控制台将表达式结果转储到控制台,但不会阻止ActiveRecord将sql信息转储到rails logger。
eremzeit 2013年

1
对以前的评论者:这回答了这个问题,这是唯一对我有用的答案,还有谁想要呢?
2014年

3
我认为这根本无法回答问题。正如@eremzeit所说,这不会停止所有sql查询被转储到您的控制台,只会停止打印该命令的返回值...
opsidao

1
它不能回答问题,但是对于不重复结果很有用
Rutger

4

在Rails 3.2中,设置

config.logger.level = Logger::INFO

对我来说,关闭SQL输出效果很好。


但是,这是否仍将SQL输出记录到日志文件中?
约书亚·品特

-2

尽管我想向您推荐“安静的资产” gem,但我看到您已经找到了所需的答案,大多数日志数据将是资产编译和包含,此gem将删除它并仍然输出查询和数据行为。

玩得开心


1
问题是关于输出到控制台而不是日志文件的问题
Roger Ertesvag 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.