Module: Datadog::Contrib::Sinatra::Env

Defined in:
lib/ddtrace/contrib/sinatra/env.rb

Overview

Gets and sets trace information from a Rack Env

Class Method Summary collapse

Class Method Details

.datadog_span(env, app) ⇒ Object



11
12
13
# File 'lib/ddtrace/contrib/sinatra/env.rb', line 11

def datadog_span(env, app)
  env[Ext::RACK_ENV_REQUEST_SPAN][app]
end

.header_to_rack_header(name) ⇒ Object



33
34
35
# File 'lib/ddtrace/contrib/sinatra/env.rb', line 33

def header_to_rack_header(name)
  "HTTP_#{name.to_s.upcase.gsub(/[-\s]/, '_')}"
end

.middleware_start_time(env) ⇒ Object

The start time of the top-most Sinatra middleware.



49
50
51
# File 'lib/ddtrace/contrib/sinatra/env.rb', line 49

def middleware_start_time(env)
  env[Ext::RACK_ENV_MIDDLEWARE_START_TIME]
end

.middleware_traced?(env) ⇒ Boolean

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.

Returns:

  • (Boolean)


40
41
42
# File 'lib/ddtrace/contrib/sinatra/env.rb', line 40

def middleware_traced?(env)
  env[Ext::RACK_ENV_MIDDLEWARE_TRACED]
end

.request_header_tags(env, headers) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/ddtrace/contrib/sinatra/env.rb', line 20

def request_header_tags(env, headers)
  headers ||= []

  {}.tap do |result|
    headers.each do |header|
      rack_header = header_to_rack_header(header)
      if env.key?(rack_header)
        result[Datadog::Ext::HTTP::RequestHeaders.to_tag(header)] = env[rack_header]
      end
    end
  end
end

.set_datadog_span(env, app, span) ⇒ Object



15
16
17
18
# File 'lib/ddtrace/contrib/sinatra/env.rb', line 15

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) ⇒ Object



53
54
55
# File 'lib/ddtrace/contrib/sinatra/env.rb', line 53

def set_middleware_start_time(env, time = Time.now.utc)
  env[Ext::RACK_ENV_MIDDLEWARE_START_TIME] = time
end

.set_middleware_traced(env, bool) ⇒ Object



44
45
46
# File 'lib/ddtrace/contrib/sinatra/env.rb', line 44

def set_middleware_traced(env, bool)
  env[Ext::RACK_ENV_MIDDLEWARE_TRACED] = bool
end