class Bigcommerce::Lightstep::Interceptors::Context
Runs interceptors in a given context
Public Class Methods
new(interceptors: nil, logger: nil)
click to toggle source
Initialize the interception context
@param [Array<Bigcommerce::Lightstep::Interceptors::Base>] interceptors @param [::Logger] logger
# 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
Public Instance Methods
intercept(span) { |span| ... }
click to toggle source
Intercept a trace with all interceptors
@param [::LightStep::Span] span
# 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