module Epilog::ActionControllerExt

Public Instance Methods

process_action(*) click to toggle source
Calls superclass method
# File lib/epilog/rails/ext/action_controller.rb, line 5
def process_action(*)
  epilog_instrument('request_received')
  epilog_instrument('process_request') do |payload|
    begin
      super
    ensure
      payload[:response] = response
      payload[:metrics] = epilog_metrics
    end
  end
end

Private Instance Methods

epilog_context() click to toggle source
# File lib/epilog/rails/ext/action_controller.rb, line 44
def epilog_context
  {}
end
epilog_instrument(name, &block) click to toggle source
# File lib/epilog/rails/ext/action_controller.rb, line 19
def epilog_instrument(name, &block)
  ActiveSupport::Notifications.instrument(
    "#{name}.action_controller",
    epilog_payload,
    &block
  )
end
epilog_metrics() click to toggle source
# File lib/epilog/rails/ext/action_controller.rb, line 37
def epilog_metrics
  {
    db_runtime: try(:db_runtime),
    view_runtime: view_runtime
  }
end
epilog_payload() click to toggle source
# File lib/epilog/rails/ext/action_controller.rb, line 27
def epilog_payload
  {
    request: request,
    response: response,
    controller: self.class.name,
    action: action_name,
    context: epilog_context
  }
end