Spec-Zone.ru › Ruby on Rails 8.1

класс ActiveSupport::StructuredEventSubscriber

Подписчик структурированных событий Active Support

ActiveSupport::StructuredEventSubscriber обрабатывает ActiveSupport::Notifications для отправки структурированных событий через Rails.event.

Примером может служить подписчик структурированных событий Action Controller, отвечающий за отправку событий обработки запросов:

module ActionController
  class StructuredEventSubscriber < ActiveSupport::StructuredEventSubscriber
    attach_to :action_controller

    def start_processing(event)
      emit_event("controller.request_started",
        controller: event.payload[:controller],
        action: event.payload[:action],
        format: event.payload[:format]
      )
    end
  end
end

После настройки при публикации уведомления "start_processing.action_controller" он корректно передаст событие (ActiveSupport::Notifications::Event) методу start_processing. Затем подписчик может отправить структурированное событие с помощью метода emit_event.

Константы

DEBUG_CHECK

Открытые методы класса

new () Показать исходный код
# File activesupport/lib/active_support/structured_event_subscriber.rb, line 56
def initialize
  super
  @silenced_events = {}
end
Вызывает метод суперкласса

Открытые методы экземпляра

call (event) Показать исходный код
# File activesupport/lib/active_support/structured_event_subscriber.rb, line 88
def call(event)
  super
rescue => e
  handle_event_error(event.name, e)
end
Вызывает метод суперкласса
emit_debug_event (name, payload = nil, caller_depth: 1, **kwargs) Показать исходный код
# File activesupport/lib/active_support/structured_event_subscriber.rb, line 82
def emit_debug_event(name, payload = nil, caller_depth: 1, **kwargs)
  ActiveSupport.event_reporter.debug(name, payload, caller_depth: caller_depth + 1, **kwargs)
rescue => e
  handle_event_error(name, e)
end

Подобно emit_event, но отправляет событие только в режиме отладки средства отправки событий

emit_event (name, payload = nil, caller_depth: 1, **kwargs) Показать исходный код
# File activesupport/lib/active_support/structured_event_subscriber.rb, line 75
def emit_event(name, payload = nil, caller_depth: 1, **kwargs)
  ActiveSupport.event_reporter.notify(name, payload, caller_depth: caller_depth + 1, **kwargs)
rescue => e
  handle_event_error(name, e)
end

Отправляет структурированное событие через Rails.event.notify.

Аргументы

  • name — имя события в виде строки или символа

  • payload — полезная нагрузка события в виде хеша или объекта

  • caller_depth — глубина стека для определения расположения исходного кода (по умолчанию: 1)

  • kwargs — дополнительные данные полезной нагрузки, объединяемые с хешем полезной нагрузки

silenced? (event) Показать исходный код
# File activesupport/lib/active_support/structured_event_subscriber.rb, line 61
def silenced?(event)
  ActiveSupport.event_reporter.subscribers.none? || @silenced_events[event]&.call
end

© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.

Spec-Zone.ru

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