класс ActiveSupport::Notifications::Instrumenter
Инструментаторы хранятся в локальном хранилище потока.
Атрибуты
Публичные методы класса
# File activesupport/lib/active_support/notifications/instrumenter.rb, line 12
def initialize(notifier)
unless notifier.respond_to?(:build_handle)
notifier = LegacyHandle::Wrapper.new(notifier)
end
@id = unique_id
@notifier = notifier
end Публичные методы экземпляра
# File activesupport/lib/active_support/notifications/instrumenter.rb, line 78 def build_handle(name, payload) @notifier.build_handle(name, @id, payload) end
Возвращает «дескриптор» события с указанными name и payload.
start и finish должны быть вызваны для возвращённого объекта ровно по одному разу.
Когда это возможно, лучше использовать instrument: этот метод регистрирует начало и завершение события и корректно обрабатывает любые исключения. build_handle — низкоуровневый API, предназначенный для случаев, когда использовать instrument невозможно.
# File activesupport/lib/active_support/notifications/instrumenter.rb, line 92 def finish(name, payload) @notifier.finish name, @id, payload end
Отправляет уведомление о завершении с name и payload.
# File activesupport/lib/active_support/notifications/instrumenter.rb, line 96 def finish_with_state(listeners_state, name, payload) @notifier.finish name, @id, payload, listeners_state end
# File activesupport/lib/active_support/notifications/instrumenter.rb, line 54
def instrument(name, payload = {})
handle = build_handle(name, payload)
handle.start
begin
yield payload if block_given?
rescue Exception => e
payload[:exception] = [e.class.name, e.message]
payload[:exception_object] = e
raise e
ensure
handle.finish
end
end Если передан блок, инструментирует его, измеряя время выполнения и публикуя событие. Если блок не передан, просто отправляет сообщение через уведомитель. Обратите внимание: события отправляются, даже если в переданном блоке возникает ошибка.
# File activesupport/lib/active_support/notifications/instrumenter.rb, line 87 def start(name, payload) @notifier.start name, @id, payload end
Отправляет уведомление о начале с name и payload.
© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.