Class: CloseYourIt::Subscribers::RequestPerformance

Inherits:
Object
  • Object
show all
Defined in:
lib/closeyourit/subscribers/request_performance.rb

Overview

A fine richiesta (process_action.action_controller) trasforma il RequestProfile accumulato nello Scope in verdetti performance_issue e li spedisce (fire-and-forget). Lo Scope — e quindi il profilo — viene azzerato subito dopo da RequestContext#call (ensure). Logica pura: il wiring ad ActiveSupport::Notifications vive nel Railtie.

Instance Method Summary collapse

Constructor Details

#initialize(configuration = nil) ⇒ RequestPerformance

Returns a new instance of RequestPerformance.



13
14
15
# File 'lib/closeyourit/subscribers/request_performance.rb', line 13

def initialize(configuration = nil)
  @configuration = configuration
end

Instance Method Details

#record(route:, duration_ms:) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/closeyourit/subscribers/request_performance.rb', line 17

def record(route:, duration_ms:)
  config = @configuration || CloseYourIt.configuration
  return unless config.detect_performance_issues

  profile = CloseYourIt::Scope.current.performance_profile
  return if profile.empty? && !slow_request?(config, duration_ms)

  events = CloseYourIt::Performance::Rollup.call(
    profile: profile, configuration: config, route: route,
    request_duration_ms: duration_ms, trace_id: CloseYourIt::Scope.current.trace_id
  )
  events.each { |event| CloseYourIt.capture_event(event) }
end