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
- .datadog_span(env, app) ⇒ Object
- .header_to_rack_header(name) ⇒ Object
-
.middleware_start_time(env) ⇒ Object
The start time of the top-most Sinatra middleware.
-
.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.
- .request_header_tags(env, headers) ⇒ Object
- .set_datadog_span(env, app, span) ⇒ Object
- .set_middleware_start_time(env, time = Time.now.utc) ⇒ Object
- .set_middleware_traced(env, bool) ⇒ Object
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.
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 (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 |