Sha256: fdb1694b445bac8ea3f1466c95353d72452d4689a3372a6b7499076ba4fc6b2b

Contents?: true

Size: 1.02 KB

Versions: 7

Compression:

Stored size: 1.02 KB

Contents

require 'action_controller/metal/instrumentation'

module ActionController
  module Instrumentation
    def process_action(*args)
      raw_payload = base_payload.merge(custom_payload)

      ActiveSupport::Notifications.instrument('start_processing.action_controller', raw_payload.dup)

      ActiveSupport::Notifications.instrument('process_action.action_controller', raw_payload) do |payload|
        begin
          result = super
          payload[:status] = response.status
          result
        ensure
          append_info_to_payload(payload)
        end
      end
    end

    private

    def base_payload
      {
        controller: self.class.name,
        action: self.action_name,
        params: request.filtered_parameters,
        format: request.format.try(:ref),
        method: request.request_method,
        path: (request.filtered_path rescue 'unknown'),
      }
    end

    def custom_payload
      {
        request_id: request.env['action_dispatch.request_id'],
        ip: request.ip,
      }
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
paul_bunyan-2.0.0 lib/paul_bunyan/rails_ext/instrumentation.rb
paul_bunyan-1.6.0 lib/paul_bunyan/rails_ext/instrumentation.rb
paul_bunyan-1.5.3 lib/paul_bunyan/rails_ext/instrumentation.rb
paul_bunyan-1.5.2 lib/paul_bunyan/rails_ext/instrumentation.rb
paul_bunyan-1.5.1 lib/paul_bunyan/rails_ext/instrumentation.rb
paul_bunyan-1.5.0 lib/paul_bunyan/rails_ext/instrumentation.rb
paul_bunyan-1.4.0 lib/paul_bunyan/rails_ext/instrumentation.rb