Class: AppMonit::Rails::Subscriber

Inherits:
Object
  • Object
show all
Defined in:
lib/app_monit/rails/subscriber.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.registerObject



6
7
8
# File 'lib/app_monit/rails/subscriber.rb', line 6

def register
  ActiveSupport::Notifications.subscribe /process_action/, self.new
end

Instance Method Details

#call(*args) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# 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) ⇒ Object



37
38
39
40
41
# 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) ⇒ Object



43
44
45
46
47
# 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

#workerAppMonit::Worker

Returns:

  • (AppMonit::Worker)


33
34
35
# File 'lib/app_monit/rails/subscriber.rb', line 33

def worker
  AppMonit::Rails::Worker.instance
end