- 1.0.0
- 1.1.6
- 1.2.6
- 2.0.3
- 2.1.0
- 2.2.1
- 2.3.8
- 3.0.0
- 3.0.9
- 3.1.0
- 3.2.1
- 3.2.8
- 3.2.13
- 4.0.2
- 4.1.8
- 4.2.1
- 4.2.7
- 4.2.9
- 5.0.0.1
- 5.1.7
- 5.2.3
- 6.0.0
- 6.1.3.1
- 6.1.7.7
- 7.0.0 (0)
- 7.1.3.2 (38)
- 7.1.3.4 (0)
- What's this?
Active Record Query Logs
Automatically tag SQL queries with runtime information.
Default tags available for use:
-
application
-
pid
-
socket
-
db_host
-
database
_Action Controller and Active Job tags are also defined when used in Rails:_
-
controller
-
action
-
job
The tags used in a query can be configured directly:
ActiveRecord::QueryLogs.tags = [ :application, :controller, :action, :job ]
or via Rails configuration:
config.active_record.query_log_tags = [ :application, :controller, :action, :job ]
To add new comment tags, add a hash to the tags array containing the keys and values you want to add to the comment. Dynamic content can be created by setting a proc or lambda value in a hash, and can reference any value stored in the context object.
Example:
tags = [ :application, { custom_tag: ->(context) { context[:controller]&.controller_name }, custom_value: -> { Custom.value }, } ] ActiveRecord::QueryLogs.tags = tags
The QueryLogs context can be manipulated via the +ActiveSupport::ExecutionContext.set+ method.
Temporary updates limited to the execution of a block:
ActiveSupport::ExecutionContext.set(foo: Bar.new) do posts = Post.all end
Direct updates to a context value:
ActiveSupport::ExecutionContext[:foo] = Bar.new
Tag comments can be prepended to the query:
ActiveRecord::QueryLogs.prepend_comment = true
For applications where the content will not change during the lifetime of the request or job execution, the tags can be cached for reuse in every query:
ActiveRecord::QueryLogs.cache_query_log_tags = true
This option can be set during application configuration or in a Rails initializer:
config.active_record.cache_query_log_tags = true