# frozen_string_literal: true module PlainApm module Hooks class ActionPack < ActiveSupportSubscriber NOTIFICATION_PATTERN = /\A[^!]\w+\.action_controller\Z/.freeze private def notification_pattern NOTIFICATION_PATTERN end def payload(event) name, source = *event.name.split(".") payload = event.payload base = { "source" => source, "name" => name, "backtrace" => filtered_backtrace, "allocations" => event.allocations, "started_at" => event.time, "finished_at" => event.end, "trace_id" => trace_id } case name when "process_action" base.merge({ "controller" => payload[:controller], "action" => payload[:action], "params" => payload[:params], "format" => payload[:format], "method" => payload[:method], "path" => payload[:path], "status" => payload[:status] }) when "redirect_to", "start_processing", "halted_callback", "send_file", "send_data" nil when "read_fragment", "write_fragment", "exist_fragment?", "expire_fragment" # controller, action, key nil end end end end end