【问题标题】:Turn off verbose sql/ActiveRecord for Rails 3.1.1关闭 Rails 3.1.1 的详细 sql/ActiveRecord
【发布时间】:2011-12-19 11:57:23
【问题描述】:

虽然 SQL/ActiveRecord 调用的详细功能在大多数情况下都很有用,但我想在发生循环的情况下将其关闭。

有没有办法关掉它?

irb(main):055:0> City.first
  ←[1m←[35mCity Load (1.0ms)←[0m  SELECT `cities`.* FROM `cities` LIMIT 1
=> #<City id: 1, name: "bla bla", state_id: 1, zip: nil, country_id: nil,
created_at: "2011-03-27 14:11:28", updated_at: "2011-08-16 11:14:36", guid: "5PK
fvvz2Gsi">

【问题讨论】:

标签: ruby-on-rails ruby activerecord ruby-on-rails-3.1


【解决方案1】:

在控制台中:
禁用:

old_logger = ActiveRecord::Base.logger
ActiveRecord::Base.logger = nil

启用:

ActiveRecord::Base.logger = old_logger

【讨论】:

  • 还有其他方法吗?这会导致使用 logger.debug 的代码出现错误。我想关掉那些我没有手动写的。
  • 另一种方法,如stackoverflow.com/questions/7759321/… 中所述,是ActiveRecord::Base.logger.level = 1 关闭日志记录(将日志级别设置为信息),ActiveRecord::Base.logger.level = 0 将其重新打开(设置日志调试级别)。
  • @FloatingRock 仅针对本次会议(当前进程),我有 99.9% 的把握。尝试并报告:)
【解决方案2】:

在 Rails 4 中,我对 ActiveRecord 在规范中间记录 SQL 语句感到恼火,因此我通过将其添加到 config/environments/test.rb 来禁用它:

Rails.application.configure do
  # ... 
  config.log_level = :info
end

【讨论】:

    【解决方案3】:

    您可以尝试将此代码放在您的 rails_spec.rb 文件中。

      config.before do
        ActiveRecord::Base.logger.level = 1
      end
    

    它对我有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-03
      • 1970-01-01
      • 2023-01-07
      • 1970-01-01
      相关资源
      最近更新 更多