Class: RSpecTelemetry::Subscribers::ActionController
- Inherits:
-
Object
- Object
- RSpecTelemetry::Subscribers::ActionController
- Defined in:
- lib/rspec_telemetry/subscribers/action_controller.rb
Constant Summary collapse
- STACK_KEY =
:rspec_telemetry_ac_stack
Instance Method Summary collapse
- #finish(_name, _id, payload) ⇒ Object
-
#initialize(recorder) ⇒ ActionController
constructor
A new instance of ActionController.
- #start(_name, _id, _payload) ⇒ Object
- #subscribe ⇒ Object
- #unsubscribe ⇒ Object
Constructor Details
#initialize(recorder) ⇒ ActionController
Returns a new instance of ActionController.
17 18 19 20 |
# File 'lib/rspec_telemetry/subscribers/action_controller.rb', line 17 def initialize(recorder) @recorder = recorder @subscription = nil end |
Instance Method Details
#finish(_name, _id, payload) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/rspec_telemetry/subscribers/action_controller.rb', line 37 def finish(_name, _id, payload) RSpecTelemetry.safely("action_controller#finish") do started = stack.pop next unless started next unless @recorder.config.enabled && @recorder.config.capture_requests now = Process.clock_gettime(Process::CLOCK_MONOTONIC) # Deliberately no :path / :params: query strings and parameter values may # carry secrets, and controller#action already identifies the endpoint. @recorder.record( "action_controller.process_action", controller: payload[:controller], action: payload[:action], http_method: payload[:method], format: payload[:format].to_s, status: payload[:status], duration_ms: ((now - started) * 1000.0).round(3), db_runtime_ms: runtime_ms(payload[:db_runtime]), view_runtime_ms: runtime_ms(payload[:view_runtime]), exception_class: Array(payload[:exception]).first ) end end |
#start(_name, _id, _payload) ⇒ Object
31 32 33 34 35 |
# File 'lib/rspec_telemetry/subscribers/action_controller.rb', line 31 def start(_name, _id, _payload) RSpecTelemetry.safely("action_controller#start") do stack.push(Process.clock_gettime(Process::CLOCK_MONOTONIC)) end end |
#subscribe ⇒ Object
22 23 24 |
# File 'lib/rspec_telemetry/subscribers/action_controller.rb', line 22 def subscribe @subscription = ActiveSupport::Notifications.subscribe("process_action.action_controller", self) end |
#unsubscribe ⇒ Object
26 27 28 29 |
# File 'lib/rspec_telemetry/subscribers/action_controller.rb', line 26 def unsubscribe ActiveSupport::Notifications.unsubscribe(@subscription) if @subscription @subscription = nil end |