class Airbrake::Rails::ActionControllerPerformanceBreakdownSubscriber

@since v8.3.0

def build_stash

def build_stash
  stash = {}
  request = Airbrake::Rack::RequestStore[:request]
  return stash unless request
  stash[:request] = request
  if (user = Airbrake::Rack::User.extract(request.env))
    stash.merge!(user.as_json)
  end
  stash
end

def call(*args)

def call(*args)
  return unless Airbrake::Config.instance.performance_stats
  routes = Airbrake::Rack::RequestStore[:routes]
  return if !routes || routes.none?
  event = Airbrake::Rails::Event.new(*args)
  stash = build_stash
  routes.each do |route, params|
    groups = event.groups.merge(params[:groups])
    next if groups.none?
    breakdown_info = {
      method: event.method,
      route: route,
      response_type: event.response_type,
      groups: groups,
      timing: event.duration,
      time: event.time,
    }
    Airbrake.notify_performance_breakdown(breakdown_info, stash)
  end
end