Class: Julewire::Rails::Subscribers::ControllerResponse

Inherits:
Object
  • Object
show all
Extended by:
Core::Integration::SubscriberInstall
Defined in:
lib/julewire/rails/subscribers/controller_response.rb

Constant Summary collapse

EVENT_NAME =
"process_action.action_controller"

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(configuration = Configuration.new) ⇒ ControllerResponse

Returns a new instance of ControllerResponse.



26
27
28
# File 'lib/julewire/rails/subscribers/controller_response.rb', line 26

def initialize(configuration = Configuration.new)
  @configuration = configuration
end

Instance Attribute Details

#configuration=(value) ⇒ Object (writeonly)

Sets the attribute configuration

Parameters:

  • value

    the value to set the attribute configuration to.



30
31
32
# File 'lib/julewire/rails/subscribers/controller_response.rb', line 30

def configuration=(value)
  @configuration = value
end

Class Method Details

.install!(configuration) ⇒ Object



14
15
16
17
18
19
20
21
22
23
# File 'lib/julewire/rails/subscribers/controller_response.rb', line 14

def install!(configuration)
  return reset! unless configuration.controller_capture?

  install_subscriber(configuration, enabled: true) do |subscriber|
    subscription = ::ActiveSupport::Notifications.subscribe(EVENT_NAME) do |*arguments|
      subscriber.process_action(::ActiveSupport::Notifications::Event.new(*arguments))
    end
    -> { ::ActiveSupport::Notifications.unsubscribe(subscription) }
  end
end

Instance Method Details

#process_action(event) ⇒ Object



32
33
34
35
36
37
38
39
40
41
# File 'lib/julewire/rails/subscribers/controller_response.rb', line 32

def process_action(event)
  return unless Julewire.current_execution?
  return if Suppression.active?

  IntegrationHealth.with_failure_health(action: :process_action, component: :controller_response_subscriber) do
    fields = capture_attributes(event.payload)
    Core::Integration::Facade.add_summary_attributes(fields[:attributes])
    Core::Integration::Facade.add_summary_neutral(fields[:neutral])
  end
end