Method: Datadog::Tracing::Contrib::Sinatra::Tracer::Base#route_eval
- Defined in:
- lib/datadog/tracing/contrib/sinatra/tracer.rb
#route_eval ⇒ Object
Invoked when a matching route is found. This method yields directly to user code.
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/datadog/tracing/contrib/sinatra/tracer.rb', line 48 def route_eval configuration = Datadog.configuration.tracing[:sinatra] return super unless Tracing.enabled? datadog_route = Sinatra::Env.route_path(env) Tracing.trace( Ext::SPAN_ROUTE, service: configuration[:service_name], type: Tracing::Metadata::Ext::HTTP::TYPE_INBOUND, resource: "#{request.request_method} #{datadog_route}", ) do |span, trace| span.set_tag(Ext::TAG_APP_NAME, settings.name || settings.superclass.name) span.set_tag(Ext::TAG_ROUTE_PATH, datadog_route) if request.script_name && !request.script_name.empty? span.set_tag(Ext::TAG_SCRIPT_NAME, request.script_name) end span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT) span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_ROUTE) trace.resource = span.resource _, path = env['sinatra.route'].split(' ', 2) trace.set_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE, path) trace.set_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE_PATH, env['SCRIPT_NAME']) sinatra_request_span = Sinatra::Env.datadog_span(env) sinatra_request_span.resource = span.resource Contrib::Analytics.set_measured(span) super end end |