Module: OpenTelemetry::Instrumentation::Rack

Extended by:
Rack
Included in:
Rack
Defined in:
lib/opentelemetry/instrumentation/rack.rb,
lib/opentelemetry/instrumentation/rack/version.rb,
lib/opentelemetry/instrumentation/rack/instrumentation.rb,
lib/opentelemetry/instrumentation/rack/util/queue_time.rb,
lib/opentelemetry/instrumentation/rack/middlewares/tracer_middleware.rb

Overview

Contains the OpenTelemetry instrumentation for the Rack gem

Defined Under Namespace

Modules: Middlewares, Util Classes: Instrumentation

Constant Summary collapse

VERSION =
'0.20.2'

Instance Method Summary collapse

Instance Method Details

#context_with_span(span, parent_context: Context.current) ⇒ Object

Returns a context containing the span, derived from the optional parent context, or the current context if one was not provided.

Parameters:

  • context (optional Context)

    The context to use as the parent for the returned context



34
35
36
# File 'lib/opentelemetry/instrumentation/rack.rb', line 34

def context_with_span(span, parent_context: Context.current)
  parent_context.set_value(CURRENT_SPAN_KEY, span)
end

#current_span(context = nil) ⇒ Object

Returns the current span from the current or provided context

Parameters:

  • context (optional Context) (defaults to: nil)

    The context to lookup the current Span from. Defaults to Context.current



24
25
26
27
# File 'lib/opentelemetry/instrumentation/rack.rb', line 24

def current_span(context = nil)
  context ||= Context.current
  context.value(CURRENT_SPAN_KEY) || OpenTelemetry::Trace::Span::INVALID
end

#with_span(span) {|span, context| ... } ⇒ Object

Activates/deactivates the Span within the current Context, which makes the “current span” available implicitly.

On exit, the Span that was active before calling this method will be reactivated.

Parameters:

  • span (Span)

    the span to activate

Yields:

  • (span, context)

    yields span and a context containing the span to the block.



45
46
47
# File 'lib/opentelemetry/instrumentation/rack.rb', line 45

def with_span(span)
  Context.with_value(CURRENT_SPAN_KEY, span) { |c, s| yield s, c }
end