Module: Datadog::Tracing::Contrib::Sinatra::Tracer::Base
- Defined in:
- lib/datadog/tracing/contrib/sinatra/tracer.rb
Overview
Method overrides for Sinatra::Base
Instance Method Summary collapse
- #render(engine, data) ⇒ Object
-
#route_eval ⇒ Object
Invoked when a matching route is found.
Instance Method Details
permalink #render(engine, data) ⇒ Object
[View source]
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/datadog/tracing/contrib/sinatra/tracer.rb', line 26 def render(engine, data, *) return super unless Tracing.enabled? Tracing.trace(Ext::SPAN_RENDER_TEMPLATE, type: Tracing::Metadata::Ext::HTTP::TYPE_TEMPLATE) do |span| span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT) span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_RENDER_TEMPLATE) span.set_tag(Ext::TAG_TEMPLATE_ENGINE, engine) # If data is a string, it is a literal template and we don't # want to record it. span.set_tag(Ext::TAG_TEMPLATE_NAME, data) if data.is_a? Symbol # Measure service stats Contrib::Analytics.set_measured(span) super end end |
permalink #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 |