module OpenTelemetry::Instrumentation::ActionPack::Patches::ActionController::Metal

Module to prepend to ActionController::Metal for instrumentation

Public Instance Methods

dispatch(name, request, response) click to toggle source
Calls superclass method
# File lib/opentelemetry/instrumentation/action_pack/patches/action_controller/metal.rb, line 14
def dispatch(name, request, response)
  rack_span = OpenTelemetry::Instrumentation::Rack.current_span
  rack_span.name = "#{self.class.name}##{name}" if rack_span.context.valid? && !request.env['action_dispatch.exception']

  add_rails_route(rack_span, request) if instrumentation_config[:enable_recognize_route]
  super(name, request, response)
end

Private Instance Methods

add_rails_route(rack_span, request) click to toggle source
# File lib/opentelemetry/instrumentation/action_pack/patches/action_controller/metal.rb, line 24
def add_rails_route(rack_span, request)
  ::Rails.application.routes.router.recognize(request) do |route, _params|
    rack_span.set_attribute('http.route', route.path.spec.to_s)
  end
end
instrumentation_config() click to toggle source
# File lib/opentelemetry/instrumentation/action_pack/patches/action_controller/metal.rb, line 30
def instrumentation_config
  ActionPack::Instrumentation.instance.config
end