Module: Datadog::Tracing::Contrib::ActionPack::ActionDispatch::Instrumentation::Journey::LazyRouter

Defined in:
lib/datadog/tracing/contrib/action_pack/action_dispatch/instrumentation.rb

Overview

Since Rails 7.1 Router#find_routes makes the route computation lazy https://github.com/rails/rails/commit/35b280fcc2d5d474f9f2be3aca3ae7aa6bba66eb

Instance Method Summary collapse

Instance Method Details

#find_routes(req) ⇒ Object



70
71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'lib/datadog/tracing/contrib/action_pack/action_dispatch/instrumentation.rb', line 70

def find_routes(req)
  super do |match, parameters, route|
    if Instrumentation.dispatcher_route?(route)
      req.env[DATADOG_RAILS_ROUTE_ENV_KEY] = route

      http_route = route.path.spec.to_s
      http_route.delete_suffix!(FORMAT_SUFFIX)

      Instrumentation.set_http_route_tags(http_route, req.env[SCRIPT_NAME_KEY])
    end

    yield [match, parameters, route]
  end
end