module Datadog::Contrib::Sinatra::Env

Gets and sets trace information from a Rack Env

Public Instance Methods

datadog_span(env, app) click to toggle source
# File lib/ddtrace/contrib/sinatra/env.rb, line 12
def datadog_span(env, app)
  env[Ext::RACK_ENV_REQUEST_SPAN][app]
end
header_to_rack_header(name) click to toggle source
# File lib/ddtrace/contrib/sinatra/env.rb, line 32
def header_to_rack_header(name)
  "HTTP_#{name.to_s.upcase.gsub(/[-\s]/, '_')}"
end
middleware_start_time(env) click to toggle source

The start time of the top-most Sinatra middleware.

# File lib/ddtrace/contrib/sinatra/env.rb, line 48
def middleware_start_time(env)
  env[Ext::RACK_ENV_MIDDLEWARE_START_TIME]
end
middleware_traced?(env) click to toggle source

Was a Sinatra already traced in this request? We don't want to create spans for intermediate Sinatra middlewares that don't match the request at hand.

# File lib/ddtrace/contrib/sinatra/env.rb, line 39
def middleware_traced?(env)
  env[Ext::RACK_ENV_MIDDLEWARE_TRACED]
end
request_header_tags(env, headers) click to toggle source
# File lib/ddtrace/contrib/sinatra/env.rb, line 21
def request_header_tags(env, headers)
  headers ||= []

  {}.tap do |result|
    headers.each do |header|
      rack_header = header_to_rack_header(header)
      result[Datadog::Ext::HTTP::RequestHeaders.to_tag(header)] = env[rack_header] if env.key?(rack_header)
    end
  end
end
set_datadog_span(env, app, span) click to toggle source
# File lib/ddtrace/contrib/sinatra/env.rb, line 16
def set_datadog_span(env, app, span)
  hash = (env[Ext::RACK_ENV_REQUEST_SPAN] ||= {})
  hash[app] = span
end
set_middleware_start_time(env, time = Time.now.utc) click to toggle source
# File lib/ddtrace/contrib/sinatra/env.rb, line 52
def set_middleware_start_time(env, time = Time.now.utc)
  env[Ext::RACK_ENV_MIDDLEWARE_START_TIME] = time
end
set_middleware_traced(env, bool) click to toggle source
# File lib/ddtrace/contrib/sinatra/env.rb, line 43
def set_middleware_traced(env, bool)
  env[Ext::RACK_ENV_MIDDLEWARE_TRACED] = bool
end