class SnowmanIO::Loop::ChecksPerform

Public Class Methods

perform() click to toggle source
# File lib/snowman-io/loop/checks_perform.rb, line 6
def self.perform
  Check.each do |check|
    result = CheckProcessor.new(check).process
    send_mail = false
    check.last_run_at = DateTime.now
    if result
      puts "Check for #{check.metric.name} triggered"
      unless check.triggered
        send_mail = true
      end
      check.triggered = true
      check.last_status = Check::STATUS_FAILED
    else
      check.last_status = Check::STATUS_OK
    end
    check.save!

    if send_mail
      SnowMailer.check_triggered(
        check,
        check.last_run_at,
        Setting.get(SnowmanIO::BASE_URL_KEY),
        check.user.email,
        true
      ).deliver_now

      check.user.followers.each do |user|
        SnowMailer.check_triggered(
          check,
          check.last_run_at,
          Setting.get(SnowmanIO::BASE_URL_KEY),
          user.email,
          false
        ).deliver_now
      end
    end
  end
end