Class: Bigcommerce::Lightstep::Interceptors::Context
- Inherits:
-
Object
- Object
- Bigcommerce::Lightstep::Interceptors::Context
- Defined in:
- lib/bigcommerce/lightstep/interceptors/context.rb
Overview
Runs interceptors in a given context
Instance Method Summary collapse
-
#initialize(interceptors: nil, logger: nil) ⇒ Context
constructor
Initialize the interception context.
-
#intercept(span) ⇒ Object
Intercept a trace with all interceptors.
Constructor Details
#initialize(interceptors: nil, logger: nil) ⇒ Context
Initialize the interception context
31 32 33 34 |
# File 'lib/bigcommerce/lightstep/interceptors/context.rb', line 31 def initialize(interceptors: nil, logger: nil) @interceptors = interceptors || ::Bigcommerce::Lightstep.interceptors.all @logger = logger || ::Bigcommerce::Lightstep.logger end |
Instance Method Details
#intercept(span) ⇒ Object
Intercept a trace with all interceptors
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/bigcommerce/lightstep/interceptors/context.rb', line 41 def intercept(span) return yield span if @interceptors.none? interceptor = @interceptors.pop return yield span unless interceptor @logger.debug "[bigcommerce-lightstep] Intercepting request with interceptor: #{interceptor.class}" interceptor.call(span: span) do |yielded_span| if @interceptors.any? intercept(yielded_span) { yield yielded_span } else yield yielded_span end end end |