class OpenTelemetry::Adapters::Rack::Adapter

The Adapter class contains logic to detect and install the Rack instrumentation adapter

Constants

MissingApplicationError

Private Instance Methods

call(env) click to toggle source
# File lib/opentelemetry/adapters/rack/adapter.rb, line 43
def call(env)
  env['RESPONSE_MIDDLEWARE'] = self.class.to_s
  __call(env)
end
require_dependencies() click to toggle source
# File lib/opentelemetry/adapters/rack/adapter.rb, line 27
def require_dependencies
  require_relative 'middlewares/tracer_middleware'
end
retain_middleware_names() click to toggle source

intercept all middleware-compatible calls, retain class name

# File lib/opentelemetry/adapters/rack/adapter.rb, line 34
def retain_middleware_names
  next_middleware = config[:application]
  raise MissingApplicationError unless next_middleware

  while next_middleware
    if next_middleware.respond_to?(:call)
      next_middleware.singleton_class.class_eval do
        alias_method :__call, :call

        def call(env)
          env['RESPONSE_MIDDLEWARE'] = self.class.to_s
          __call(env)
        end
      end
    end

    next_middleware = next_middleware.instance_variable_defined?('@app') &&
                      next_middleware.instance_variable_get('@app')
  end
end