module ActiveRecord::QueryLogs
Журналы запросов Active Record
Автоматически добавляет информацию о времени выполнения к SQL-запросам.
Доступные по умолчанию метки:
-
application -
pid -
socket -
db_host -
database
_Метки Action Controller и Active Job также определяются при использовании в Rails:_
-
controller -
action -
job
Используемые метки можно настроить напрямую:
ActiveRecord::QueryLogs.tags = [ :application, :controller, :action, :job ]
или через конфигурацию Rails:
config.active_record.query_log_tags = [ :application, :controller, :action, :job ]
Чтобы добавить новые метки комментариев, добавьте в массив `tags` хеш, содержащий ключи и значения, которые вы хотите добавить к комментарию. Динамическое содержимое можно создать, установив в хеше значение proc или lambda, которые могут ссылаться на любые значения, хранящиеся в объекте context.
Пример:
tags = [
:application,
{
custom_tag: ->(context) { context[:controller]&.controller_name },
custom_value: -> { Custom.value },
}
]
ActiveRecord::QueryLogs.tags = tags
Теги QueryLogs context можно изменять с помощью метода ActiveSupport::ExecutionContext.set.
Временные изменения, ограниченные выполнением блока:
ActiveSupport::ExecutionContext.set(foo: Bar.new) do posts = Post.all end
Прямые обновления значения контекста:
ActiveSupport::ExecutionContext[:foo] = Bar.new
Комментарии к меткам можно добавлять перед запросом:
ActiveRecord::QueryLogs.prepend_comment = true
Для приложений, где содержимое не изменяется в течение всего времени выполнения запроса или работы задания, метки можно кэшировать для повторного использования в каждом запросе:
ActiveRecord::QueryLogs.cache_query_log_tags = true
Этот параметр можно задать при конфигурации приложения или в файле инициализации Rails:
config.active_record.cache_query_log_tags = true
© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.