繁体   English   中英

Rails 6.1 开发环境不打印查询触发器代码行,详细激活

[英]Rails 6.1 development environment not printing query trigger code line with verbose active

我有两条线:

  # Highlight code that triggered database queries in logs.
  config.active_record.verbose_query_logs = true
  ActiveRecord::Base.verbose_query_logs = true

在我的config/environments/development/rb

但在我的开发日志中,sql 查询记录如下:

2022-08-10 08:35:18.536410 D [74:puma srv tp 004] (0.006ms) ActiveRecord -- Model Load -- { :sql => "SELECT ....", :binds => { .... }, :allocations => 1, :cached => true }

我有一个 N+1 查询问题要修复,但缺少关于代码中哪一行触发查询的信息,所以这对我没有多大帮助。

我还尝试使用带有配置的 active-record-query-trace gem:

if Rails.env.development?
  ActiveRecordQueryTrace.enabled = true
  ActiveRecordQueryTrace.level = :full
  ActiveRecordQueryTrace.colorize = true           # No colorization (default)
  ActiveRecordQueryTrace.colorize = :light_purple
  # Optional: other gem config options go here
end

但我发现查询的记录方式完全没有变化。

如何启用触发查询的行的日志记录?

谢谢

如果您想知道进行数据库查询的参考点,我曾经使用名为 Marginalia 的 gem。 我在 Rails 6 中使用它,它完全符合您的要求。

从我正在阅读的内容来看,Rails 7 包含此功能作为本机功能(我可能会添加这非常棒)。

我找到了一个讨论这个的链接: Rails 7 includes Marginalia

他们的例子说:

# config/application.rb

module Saeloun
  class Application < Rails::Application
     config.active_record.query_log_tags_enabled = true
  end
end

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM