Class: BrainzLab::Rails::Subscriber
- Inherits:
-
Object
- Object
- BrainzLab::Rails::Subscriber
- Defined in:
- lib/brainzlab/rails/subscriber.rb
Overview
Central subscriber that hooks into ALL Rails ActiveSupport::Notifications Uses monotonic_subscribe for accurate timing measurements
Constant Summary collapse
- RAILS_EVENT_PATTERNS =
[ # Action Controller 'start_processing.action_controller', 'process_action.action_controller', 'redirect_to.action_controller', 'halted_callback.action_controller', 'send_file.action_controller', 'send_data.action_controller', 'send_stream.action_controller', 'unpermitted_parameters.action_controller', 'rate_limit.action_controller', # Action Controller Caching 'write_fragment.action_controller', 'read_fragment.action_controller', 'expire_fragment.action_controller', 'exist_fragment?.action_controller', # Action View 'render_template.action_view', 'render_partial.action_view', 'render_collection.action_view', 'render_layout.action_view', # Action Dispatch 'process_middleware.action_dispatch', 'redirect.action_dispatch', 'request.action_dispatch', # Active Record 'sql.active_record', 'instantiation.active_record', 'start_transaction.active_record', 'transaction.active_record', 'strict_loading_violation.active_record', # Active Job 'enqueue.active_job', 'enqueue_at.active_job', 'enqueue_all.active_job', 'enqueue_retry.active_job', 'perform_start.active_job', 'perform.active_job', 'retry_stopped.active_job', 'discard.active_job', # Action Cable 'perform_action.action_cable', 'transmit.action_cable', 'transmit_subscription_confirmation.action_cable', 'transmit_subscription_rejection.action_cable', 'broadcast.action_cable', # Action Mailer 'deliver.action_mailer', 'process.action_mailer', # Action Mailbox 'process.action_mailbox', # Active Storage 'service_upload.active_storage', 'service_streaming_download.active_storage', 'service_download.active_storage', 'service_download_chunk.active_storage', 'service_delete.active_storage', 'service_delete_prefixed.active_storage', 'service_exist.active_storage', 'service_url.active_storage', 'service_update_metadata.active_storage', 'preview.active_storage', 'transform.active_storage', 'analyze.active_storage', # Active Support Cache 'cache_read.active_support', 'cache_read_multi.active_support', 'cache_generate.active_support', 'cache_fetch_hit.active_support', 'cache_write.active_support', 'cache_write_multi.active_support', 'cache_increment.active_support', 'cache_decrement.active_support', 'cache_delete.active_support', 'cache_delete_multi.active_support', 'cache_delete_matched.active_support', 'cache_cleanup.active_support', 'cache_prune.active_support', 'cache_exist?.active_support', 'message_serializer_fallback.active_support', # Rails 'deprecation.rails', # Railties 'load_config_initializer.railties' ].freeze
Instance Attribute Summary collapse
-
#configuration ⇒ Object
readonly
Returns the value of attribute configuration.
-
#event_router ⇒ Object
readonly
Returns the value of attribute event_router.
-
#subscriptions ⇒ Object
readonly
Returns the value of attribute subscriptions.
Instance Method Summary collapse
-
#initialize(configuration) ⇒ Subscriber
constructor
A new instance of Subscriber.
- #subscribe_all! ⇒ Object
- #unsubscribe_all! ⇒ Object
Constructor Details
#initialize(configuration) ⇒ Subscriber
Returns a new instance of Subscriber.
108 109 110 111 112 |
# File 'lib/brainzlab/rails/subscriber.rb', line 108 def initialize(configuration) @configuration = configuration @event_router = EventRouter.new(configuration) @subscriptions = [] end |
Instance Attribute Details
#configuration ⇒ Object (readonly)
Returns the value of attribute configuration.
106 107 108 |
# File 'lib/brainzlab/rails/subscriber.rb', line 106 def configuration @configuration end |
#event_router ⇒ Object (readonly)
Returns the value of attribute event_router.
106 107 108 |
# File 'lib/brainzlab/rails/subscriber.rb', line 106 def event_router @event_router end |
#subscriptions ⇒ Object (readonly)
Returns the value of attribute subscriptions.
106 107 108 |
# File 'lib/brainzlab/rails/subscriber.rb', line 106 def subscriptions @subscriptions end |
Instance Method Details
#subscribe_all! ⇒ Object
114 115 116 117 118 119 120 |
# File 'lib/brainzlab/rails/subscriber.rb', line 114 def subscribe_all! RAILS_EVENT_PATTERNS.each do |event_name| subscribe_to(event_name) end BrainzLab.debug_log("[BrainzLab::Rails] Subscribed to #{@subscriptions.size} events") end |
#unsubscribe_all! ⇒ Object
122 123 124 125 126 127 |
# File 'lib/brainzlab/rails/subscriber.rb', line 122 def unsubscribe_all! @subscriptions.each do |subscription| ActiveSupport::Notifications.unsubscribe(subscription) end @subscriptions.clear end |