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

Rog*_*vag 101 ruby-on-rails

在较新版本的Rails中,我猜测从3开始,数据库查询输出到控制台.这在大多数情况下很有用,但是当你不想看到它时,你怎么能隐藏它呢?

Aar*_*ell 173

更好的方法是在控制台中键入:

ActiveRecord::Base.logger.level = 1 
Run Code Online (Sandbox Code Playgroud)

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

把它重新打开

ActiveRecord::Base.logger.level = 0
Run Code Online (Sandbox Code Playgroud)

  • 谢谢.并重新打开它,`ActiveRecord :: Base.logger.level = 0`. (31认同)

sam*_*tte 29

ActiveRecord::Base.logger = nil
Run Code Online (Sandbox Code Playgroud)

这里开始

  • 这可能导致`NoMethodError`s与ActiveRecord期望`ActiveRecord :: Base.logger`是一个对象而不是`nil`. (6认同)

mad*_*th3 9

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

config.log_level = :info
Run Code Online (Sandbox Code Playgroud)

  • 它适用于更改日志文件的内容.但问题是关于rails控制台,而不是日志文件. (3认同)

小智 5

来自我的一个朋友:

your_query; nil
Run Code Online (Sandbox Code Playgroud)

  • 这将阻止您的ruby控制台将表达式结果转储到控制台,但不会阻止ActiveRecord将sql信息转储到rails logger。 (7认同)
  • 我认为这根本无法回答问题。就像@eremzeit所说的那样,这不会停止所有的sql查询被转储到您的控制台,只会停止打印该命令的返回值。 (3认同)