class Alerty::Plugin::Mail

Constants

VERSION

Public Class Methods

new(config) click to toggle source
# File lib/alerty/plugin/mail.rb, line 9
def initialize(config)
  raise ConfigError.new('mail: send_from is not configured') unless config.send_from
  raise ConfigError.new('mail: send_to is not configured') unless config.send_to
  delivery_method = config.delivery_method.to_sym || :sendmail
  delivery_settings = config.delivery_settings
  num_retries = config.num_retries || 3

  @mail = ::Mail.new do
    from    config.send_from
    to      config.send_to
  end
  if delivery_settings
    @mail.delivery_method(delivery_method, delivery_settings.map {|k, v| [k.to_sym, v] }.to_h)
  else
    @mail.delivery_method(delivery_method)
  end
  @num_retries = num_retries
  @subject = config.subject
end

Public Instance Methods

alert(record) click to toggle source
# File lib/alerty/plugin/mail.rb, line 29
def alert(record)
  subject = expand_placeholder(@subject, record) if @subject
  message = record[:output]
  retries = 0
  begin
    @mail.subject = subject if @subject
    @mail.body = message
    @mail.deliver!
  rescue => e
    retries += 1
    sleep 1
    if retries <= @num_retries
      retry
    else
      raise e
    end
  end
end

Private Instance Methods

expand_placeholder(str, record) click to toggle source
# File lib/alerty/plugin/mail.rb, line 50
def expand_placeholder(str, record)
  str.gsub('${hostname}', record[:hostname]).gsub!('${command}', record[:command])
end