class GeckoLogSubscriber

Requiring this file, or calling `Gecko.enable_logging` will hook into the provided ActiveSupport::Notification hooks on requests and log ActiveRecord-style messages on API requests.

Constants

ENV_KEY

Public Class Methods

new() click to toggle source
Calls superclass method
# File lib/gecko/ext/log_subscriber.rb, line 11
def initialize
  super
  @odd = false
end

Public Instance Methods

odd?() click to toggle source
# File lib/gecko/ext/log_subscriber.rb, line 41
def odd?
  @odd = !@odd
end
request(event) click to toggle source
# File lib/gecko/ext/log_subscriber.rb, line 16
def request(event) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
  RequestStore.store[ENV_KEY] = []
  payload = event.payload

  request_path = payload[:request_path]

  if payload[:params] && payload[:verb] == :get
    request_path = request_path + "?" + payload[:params].to_param
    RequestStore.store[ENV_KEY] << request_path
  end

  name  = "#{payload[:model_class]} Load (#{event.duration.round(1)}ms)"
  query = "#{payload[:verb].to_s.upcase} /#{request_path}"

  name = if odd?
           color(name, CYAN, true)
         else
           color(name, MAGENTA, true)
         end

  query = color(query, nil, true)

  debug("  #{name}  #{query}")
end