diff --git a/lib/datadog/tracing/contrib/rails/patcher.rb b/lib/datadog/tracing/contrib/rails/patcher.rb index 1054e7cc42b..d9b3418606a 100644 --- a/lib/datadog/tracing/contrib/rails/patcher.rb +++ b/lib/datadog/tracing/contrib/rails/patcher.rb @@ -11,9 +11,10 @@ module Datadog module Tracing module Contrib module Rails - module JourneyRouterPatch - def find_routes(*) + module RoutingRouteSetPatch + def call(*) result = nil + configuration = Datadog.configuration.tracing[:rails] Tracing.trace( @@ -22,12 +23,18 @@ def find_routes(*) span_type: Tracing::Metadata::Ext::HTTP::TYPE_INBOUND, # resource: "#{request.request_method} #{datadog_route}", ) do |span, trace| - binding.pry - result = super + end - binding.pry + result + end + end + + module JourneyRouterPatch + def find_routes(*) + result = super + if (span = Datadog::Tracing.active_span) datadog_route = result.first[2].path.spec.to_s span.set_tag(Ext::TAG_ROUTE_PATH, datadog_route) @@ -68,6 +75,7 @@ def before_initialize(app) # Sometimes we don't want to activate middleware e.g. OpenTracing, etc. add_middleware(app) if Datadog.configuration.tracing[:rails][:middleware] + ActionDispatch::Routing::RouteSet.prepend(RoutingRouteSetPatch) ActionDispatch::Journey::Router.prepend(JourneyRouterPatch) Rails::LogInjection.configure_log_tags(app.config)