class AppMonit::Rails::Subscriber

Public Class Methods

register() click to toggle source
# File lib/app_monit/rails/subscriber.rb, line 6
def register
  ActiveSupport::Notifications.subscribe /process_action/, self.new
end

Public Instance Methods

call(*args) click to toggle source
# File lib/app_monit/rails/subscriber.rb, line 11
def call(*args)
  event = ActiveSupport::Notifications::Event.new(*args)

  payload  = event.payload
  endpoint = "#{payload[:controller]}##{payload[:action]}"

  return if AppMonit::Rails::Config.skipped_endpoints.include?(endpoint)

  minute   = event.time.to_i - (event.time.to_i % 60)

  if payload[:exception]
    trigger_error(minute, endpoint, event.duration.to_i)
    trigger_error(minute, 'total', event.duration.to_i)
  else
    durations = { total: event.duration.to_i, view: payload[:view_runtime].to_i,
                  db:    payload[:db_runtime].to_i, ext: payload[:ext_runtime].to_i }
    trigger_event(minute, endpoint, durations)
    trigger_event(minute, 'total', durations)
  end
end
trigger_error(minute, endpoint, duration) click to toggle source
# File lib/app_monit/rails/subscriber.rb, line 37
def trigger_error(minute, endpoint, duration)
  event = AppMonit::Rails::Error.new(minute, endpoint, duration)
  AppMonit::Rails.logger.debug event
  worker.push(event)
end
trigger_event(minute, endpoint, durations) click to toggle source
# File lib/app_monit/rails/subscriber.rb, line 43
def trigger_event(minute, endpoint, durations)
  event = AppMonit::Rails::Event.new(minute, endpoint, durations)
  AppMonit::Rails.logger.debug event
  worker.push(event)
end
worker() click to toggle source

@return [AppMonit::Worker]

# File lib/app_monit/rails/subscriber.rb, line 33
def worker
  AppMonit::Rails::Worker.instance
end