[英]Rails: Reloading code in development environment gives a “ApplicationHelper has been removed from the module tree but is still active!” error
[英]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.