класс ActiveRecord::ExplainRegistry::Subscriber
Константы
- EXPLAINED_SQLS
- IGNORED_PAYLOADS
-
Для запросов SCHEMA нельзя выполнить EXPLAIN; кроме того, мы не хотим запускать EXPLAIN для собственных EXPLAIN, какими бы восхитительно цикличными они ни были.
С другой стороны, мы хотим отслеживать производительность реальных запросов к базе данных, а не производительность доступа к кэшу запросов.
- MUTEX
Открытые методы класса
# File activerecord/lib/active_record/explain_registry.rb, line 16
def ensure_subscribed
return if @subscribed
MUTEX.synchronize do
return if @subscribed
ActiveSupport::Notifications.subscribe("sql.active_record", new)
@subscribed = true
end
end Открытые методы экземпляра
# File activerecord/lib/active_record/explain_registry.rb, line 31
def finish(name, id, payload)
if ExplainRegistry.collect? && !ignore_payload?(payload)
ExplainRegistry.queries << payload.values_at(:sql, :binds)
end
end # File activerecord/lib/active_record/explain_registry.rb, line 48
def ignore_payload?(payload)
payload[:exception] ||
payload[:cached] ||
IGNORED_PAYLOADS.include?(payload[:name]) ||
!payload[:sql].match?(EXPLAINED_SQLS)
end # File activerecord/lib/active_record/explain_registry.rb, line 37 def silenced?(_name) !ExplainRegistry.collect? end
# File activerecord/lib/active_record/explain_registry.rb, line 27 def start(name, id, payload) # unused end
© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.