Sha256: 0a5288a127bee699d971e3431dcf56b450130882743e93f59c97bd4abb59f94f

Contents?: true

Size: 1013 Bytes

Versions: 2

Compression:

Stored size: 1013 Bytes

Contents

require 'airbrake/rails/event'
require 'airbrake/rails/app'

module Airbrake
  module Rails
    # ActionControllerRouteSubscriber sends route stat information, including
    # performance data.
    #
    # @since v8.0.0
    class ActionControllerRouteSubscriber
      def call(*args)
        # We don't track routeless events.
        return unless (routes = Airbrake::Rack::RequestStore[:routes])

        event = Airbrake::Rails::Event.new(*args)
        route = Airbrake::Rails::App.recognize_route(
          Airbrake::Rack::RequestStore[:request]
        )
        return unless route

        routes[find_route_name(route)] = {
          method: event.method,
          response_type: event.response_type,
          groups: {}
        }
      end

      def find_route_name(route)
        if route.app.respond_to?(:app) && route.app.app.respond_to?(:engine_name)
          "#{route.app.app.engine_name}##{route.path.spec}"
        else
          route.path.spec.to_s
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
airbrake-9.5.3 lib/airbrake/rails/action_controller_route_subscriber.rb
airbrake-9.5.2 lib/airbrake/rails/action_controller_route_subscriber.rb