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

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

Overview

Since Rails 8.1, Router#find_routes was removed by inlining its body into recognize. https://github.com/rails/rails/commit/e533a32ddf06668dfa3dfbe9b665607e235b06ac

Instance Method Summary collapse

Instance Method Details

#recognize(req) ⇒ Object



89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
# File 'lib/datadog/tracing/contrib/action_pack/action_dispatch/instrumentation.rb', line 89

def recognize(req)
  # recognize modifies SCRIPT_NAME before yielding; capture it before super.
  original_script_name = req.env[SCRIPT_NAME_KEY]

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

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

      Instrumentation.set_http_route_tags(http_route, original_script_name)
    end

    yield route, parameters
  end
end