Module: Datadog::Tracing::Contrib::Sinatra::Env
- Defined in:
- lib/datadog/tracing/contrib/sinatra/env.rb
Overview
Gets and sets trace information from a Rack Env
Class Method Summary collapse
- .datadog_span(env) ⇒ Object
- .header_to_rack_header(name) ⇒ Object
- .request_header_tags(env, headers) ⇒ Object
- .route_path(env, use_script_names: ) ⇒ Object
- .set_datadog_span(env, span) ⇒ Object
Class Method Details
.datadog_span(env) ⇒ Object
14 15 16 |
# File 'lib/datadog/tracing/contrib/sinatra/env.rb', line 14 def datadog_span(env) env[Ext::RACK_ENV_SINATRA_REQUEST_SPAN] end |
.header_to_rack_header(name) ⇒ Object
35 36 37 |
# File 'lib/datadog/tracing/contrib/sinatra/env.rb', line 35 def header_to_rack_header(name) "HTTP_#{name.to_s.upcase.gsub(/[-\s]/, '_')}" end |
.request_header_tags(env, headers) ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/datadog/tracing/contrib/sinatra/env.rb', line 22 def (env, headers) headers ||= [] {}.tap do |result| headers.each do |header| rack_header = header_to_rack_header(header) if env.key?(rack_header) result[Tracing::Metadata::Ext::HTTP::RequestHeaders.to_tag(header)] = env[rack_header] end end end end |
.route_path(env, use_script_names: ) ⇒ Object
39 40 41 42 43 44 45 46 47 48 |
# File 'lib/datadog/tracing/contrib/sinatra/env.rb', line 39 def route_path(env, use_script_names: Datadog.configuration.tracing[:sinatra][:resource_script_names]) return unless env['sinatra.route'] _, path = env['sinatra.route'].split(' ', 2) if use_script_names env['SCRIPT_NAME'].to_s + path else path end end |
.set_datadog_span(env, span) ⇒ Object
18 19 20 |
# File 'lib/datadog/tracing/contrib/sinatra/env.rb', line 18 def set_datadog_span(env, span) env[Ext::RACK_ENV_SINATRA_REQUEST_SPAN] = span end |