module Eye::Process::Notify

Constants

LEVELS

notify to user: 1) process crashed by itself, and we restart it [:info] 2) checker bounded to restart process [:warn] 3) flapping + switch to unmonitored [:error]

Public Class Methods

included(base) click to toggle source
# File lib/eye/process/notify.rb, line 3
def self.included(base)
  base.class_eval do
    trap_exit :notify_died
  end
end

Public Instance Methods

notify(level, msg) click to toggle source
# File lib/eye/process/notify.rb, line 16
def notify(level, msg)
  # logging it
  error "NOTIFY: #{msg}" if ilevel(level) > ilevel(:info)

  # send notifies
  if self[:notify].present?
    message = {:message => msg, :name => name,
      :full_name => full_name, :pid => pid, :host => Eye::Local.host, :level => level,
      :at => Time.now }

    self[:notify].each do |contact, not_level|
      Eye::Notify.notify(contact, message) if ilevel(level) >= ilevel(not_level)
    end
  end
end
notify_died(actor, reason) click to toggle source
# File lib/eye/process/notify.rb, line 32
def notify_died(actor, reason)
  error "NOTIFY DIED: #{actor.inspect} has died because of a #{reason.class}"
end

Private Instance Methods

ilevel(level) click to toggle source
# File lib/eye/process/notify.rb, line 38
def ilevel(level)
  LEVELS[level].to_i
end