【问题标题】:How can you hide database output in Rails console?如何在 Rails 控制台中隐藏数据库输出?
【发布时间】:2011-12-05 04:02:47
【问题描述】:

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

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

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

    config.log_level = :info
    

    【讨论】:

    • 不,这似乎对控制台中发生的事情没有任何影响。另外,我更喜欢不需要我更改项目文件的解决方案。
    • 好的,该解决方案适用于我的 webrick,但您可能正在使用其他服务器或在生产或测试模式下运行?
    • 它适用于更改日志文件的内容。但问题是关于 Rails 控制台,而不是日志文件。
    【解决方案2】:
    ActiveRecord::Base.logger = nil
    

    来自here

    【讨论】:

    • 这会导致 NoMethodErrors 与 ActiveRecord 期望 ActiveRecord::Base.logger 是一个对象,而不是 nil
    【解决方案3】:

    来自我的一个朋友:

    your_query; nil
    

    【讨论】:

    • 为提高您的帖子质量,请说明您的帖子将如何/为何解决问题。
    • 这将阻止您的 ruby​​ 控制台将表达式的结果转储到控制台,但不会阻止 ActiveRecord 将 sql 信息转储到 rails 记录器。
    • 致之前的评论者:这回答了问题,这是唯一对我有用的答案,还有什么希望?
    • 我认为这根本不能回答问题。正如@eremzeit 所说,这不会阻止所有 sql 查询被转储到您的控制台,它只会阻止该命令的返回值被打印...
    • 它不回答问题但对不重复结果很有用
    【解决方案4】:

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

    玩得开心

    【讨论】:

    • 问题是关于输出到控制台,而不是日志文件
    【解决方案5】:

    执行此操作的更好方法是在控制台中输入以下内容:

    ActiveRecord::Base.logger.level = 1 
    

    因为它可以防止尝试使用指向设置为 nil 的记录器的指针时出现问题(来源:Disable Rails SQL logging in console

    重新开启

    ActiveRecord::Base.logger.level = 0
    

    【讨论】:

    • 谢谢。要重新打开它,ActiveRecord::Base.logger.level = 0
    • 知道如何用 Mongoid 做到这一点吗?
    【解决方案6】:

    在 Rails 3.2 中,设置

    config.logger.level = Logger::INFO
    

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

    【讨论】:

    • 这是否仍将 SQL 输出记录到日志文件中?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-07
    • 1970-01-01
    • 1970-01-01
    • 2018-12-01
    • 1970-01-01
    • 2015-09-20
    • 1970-01-01
    相关资源
    最近更新 更多