Class: CloseYourIt::Subscribers::RequestPerformance
- Inherits:
-
Object
- Object
- CloseYourIt::Subscribers::RequestPerformance
- 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
-
#initialize(configuration = nil) ⇒ RequestPerformance
constructor
A new instance of RequestPerformance.
- #record(route:, duration_ms:) ⇒ Object
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 |