Module: RackExtension

Defined in:
lib/instrumentation/epsagon_rails_middleware.rb

Class Method Summary collapse

Class Method Details

.context_with_span(span, parent_context: OpenTelemetry::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



290
291
292
# File 'lib/instrumentation/epsagon_rails_middleware.rb', line 290

def context_with_span(span, parent_context: OpenTelemetry::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



280
281
282
283
# File 'lib/instrumentation/epsagon_rails_middleware.rb', line 280

def current_span(context = nil)
  context ||= OpenTelemetry::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.



301
302
303
# File 'lib/instrumentation/epsagon_rails_middleware.rb', line 301

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