Spec-Zone.ru › Ruby on Rails 7.0

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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API