lib/airbrake/rails/action_controller_route_subscriber.rb
# frozen_string_literal: true
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)
return unless Airbrake::Config.instance.performance_stats
# 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[route.path] = {
method: event.method,
response_type: event.response_type,
groups: {},
}
end
end
end
end