class ActionController::StructuredEventSubscriber
:nodoc:
def additions_for(payload)
def additions_for(payload) payload.slice(:view_runtime, :db_runtime, :queries_count, :cached_queries_count) end
def exist_fragment?(event)
def exist_fragment?(event) fragment_cache(__method__, event) end
def expire_fragment(event)
def expire_fragment(event) fragment_cache(__method__, event) end
def fragment_cache(method_name, event)
def fragment_cache(method_name, event) key = ActiveSupport::Cache.expand_cache_key(event.payload[:key] || event.payload[:path]) emit_event("action_controller.fragment_cache", method: "#{method_name}", key: key, duration_ms: event.duration.round(1) ) end
def halted_callback(event)
def halted_callback(event) emit_event("action_controller.callback_halted", filter: event.payload[:filter]) end
def process_action(event)
def process_action(event) payload = event.payload status = payload[:status] if status.nil? && (exception_class_name = payload[:exception]&.first) status = ActionDispatch::ExceptionWrapper.status_code_for_exception(exception_class_name) end emit_event("action_controller.request_completed", { controller: payload[:controller], action: payload[:action], status: status, **additions_for(payload), duration_ms: event.duration.round(2), gc_time_ms: event.gc_time.round(1), }.compact) end
def read_fragment(event)
def read_fragment(event) fragment_cache(__method__, event) end
def redirect_to(event)
def redirect_to(event) emit_event("action_controller.redirected", location: event.payload[:location]) end
def rescue_from_callback(event)
def rescue_from_callback(event) exception = event.payload[:exception] exception_backtrace = exception.backtrace&.first exception_backtrace = exception_backtrace&.delete_prefix("#{Rails.root}/") if defined?(Rails.root) && Rails.root emit_event("action_controller.rescue_from_handled", exception_class: exception.class.name, exception_message: exception.message, exception_backtrace: ) end
def send_data(event)
def send_data(event) emit_event("action_controller.data_sent", filename: event.payload[:filename], duration_ms: event.duration.round(1)) end
def send_file(event)
def send_file(event) emit_event("action_controller.file_sent", path: event.payload[:path], duration_ms: event.duration.round(1)) end
def start_processing(event)
def start_processing(event) payload = event.payload params = {} payload[:params].each_pair do |k, v| params[k] = v unless INTERNAL_PARAMS.include?(k) end format = payload[:format] format = format.to_s.upcase if format.is_a?(Symbol) format = "*/*" if format.nil? emit_event("action_controller.request_started", controller: payload[:controller], action: payload[:action], format:, params:, ) end
def unpermitted_parameters(event)
def unpermitted_parameters(event) unpermitted_keys = event.payload[:keys] context = event.payload[:context] emit_debug_event("action_controller.unpermitted_parameters", unpermitted_keys:, context: context.except(:request) ) end
def write_fragment(event)
def write_fragment(event) fragment_cache(__method__, event) end