简体   繁体   中英

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

I have both lines:

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

in my config/environments/development/rb

But in my development log the sql queries are logged like:

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 }

I have an N+1 queries issue to fix, but the information about which line in the code triggered the query is missing, so this is not helping me much.

I tried also using active-record-query-trace gem, with configuration:

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

but I see no changes at all in how queries are logged.

How can I enable the logging of the line triggering the query?

Thanks

If you want to know the reference point that made a DB query I used to use a gem called Marginalia. I use it in Rails 6 and it does exactaly what you are looking for.

From what I am reading Rails 7 includes this feature as a native feature (which is quite awesome I might add).

I found a link that talks about this: Rails 7 includes Marginalia

Their example says:

# config/application.rb

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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