class Hickory::LogSubscribers::ActionController
Public Instance Methods
process_action(event)
click to toggle source
# File lib/hickory/log_subscribers/action_controller.rb, line 4 def process_action(event) return if Hickory::Rails.ignore_if.present? && Hickory::Rails.ignore_if.call(event) payload = event.payload except_keys = %i[headers params path status view_runtime db_runtime] metadata = payload.except(*except_keys).tap { |data| data.merge!(uri(payload)) data.merge!(runtimes(event, payload)) data.merge!(status(payload)) data.merge!(params(payload)) } logger.info("canonical-request #{payload[:method]} #{payload[:path]}", metadata) end
Private Instance Methods
get_error_status_code(exception)
click to toggle source
# File lib/hickory/log_subscribers/action_controller.rb, line 56 def get_error_status_code(exception) status = ActionDispatch::ExceptionWrapper.rescue_responses[exception] Rack::Utils.status_code(status) end
params(payload)
click to toggle source
# File lib/hickory/log_subscribers/action_controller.rb, line 50 def params(payload) { params: payload[:params].except(:controller, :action, :format) } end
runtimes(event, payload)
click to toggle source
# File lib/hickory/log_subscribers/action_controller.rb, line 32 def runtimes(event, payload) { duration: event.duration.to_f.round(2) }.tap { |data| data[:view] = payload[:view_runtime].to_f.round(2) if payload.key?(:view_runtime) data[:db] = payload[:db_runtime].to_f.round(2) if payload.key?(:db_runtime) } end
status(payload)
click to toggle source
# File lib/hickory/log_subscribers/action_controller.rb, line 39 def status(payload) if status = payload[:status] { status: status.to_i } elsif error = payload[:exception] exception, message = error { status: get_error_status_code(exception), error: "#{exception}: #{message}" } else { status: 0 } end end
uri(payload)
click to toggle source
# File lib/hickory/log_subscribers/action_controller.rb, line 22 def uri(payload) return {} unless payload.key?(:path) _uri = URI.parse(payload[:path]) { path: _uri.path }.tap { |data| data[:query] = _uri.query unless _uri.query.nil? } end