class Checkups::Checkup

Attributes

name[R]
status[R]
status_message[R]
url[R]
verbose[R]

Public Class Methods

checkups_by_frequency(frequency, _verbose: false) click to toggle source

TODO: Remove verbose from method signature

# File lib/checkups/checkup.rb, line 20
def self.checkups_by_frequency(frequency, _verbose: false)
  checkup_classes = ObjectSpace.each_object(::Class).select { |klass| klass < self }
  checkup_classes.select { |klass| klass.frequency == frequency }
end
daily() click to toggle source
# File lib/checkups/checkup.rb, line 15
def self.daily
  checkups_by_frequency(:daily)
end
frequency() click to toggle source
# File lib/checkups/checkup.rb, line 25
def self.frequency
  :never
end
hourly() click to toggle source
# File lib/checkups/checkup.rb, line 11
def self.hourly
  checkups_by_frequency(:hourly)
end
new(verbose: false) click to toggle source
# File lib/checkups/checkup.rb, line 29
def initialize(verbose: false)
  @notify_frequency = :always
  @verbose = verbose
  @name = nil
  ok
end

Public Instance Methods

check() click to toggle source
# File lib/checkups/checkup.rb, line 54
def check
  ok
end
check_and_notify!(&block) click to toggle source
# File lib/checkups/checkup.rb, line 36
def check_and_notify!(&block)
  check(&block)
  send_notification
rescue => e # rubocop:disable Style/RescueStandardError
  handle_error(e)
end
notify_message() click to toggle source
# File lib/checkups/checkup.rb, line 58
def notify_message
  "Checkup #{@status.to_s.capitalize}: " + @status_message
end
passed?() click to toggle source
# File lib/checkups/checkup.rb, line 43
def passed?
  case check
  when nil, :ok, :info
    true
  when :warning, :error
    false
  else
    raise "Unknown status: #{check}"
  end
end

Protected Instance Methods

error(message) click to toggle source
# File lib/checkups/checkup.rb, line 77
def error(message)
  set_status(:error, message)
end
handle_error(error) click to toggle source

rubocop:disable Style/RescueStandardError

# File lib/checkups/checkup.rb, line 105
def handle_error(error)
  message = "Error running Checkup class #{self.class.name}: #{error.message} #{error.backtrace[0]}"
  set_status(:fatal, message)
  notifier.notify(self)
rescue
  # Last chance for gas
  logger.error("Checkup handle_error error! #{error.message}") rescue nil # rubocop:disable Style/RescueModifier
end
info(message) click to toggle source
# File lib/checkups/checkup.rb, line 68
def info(message)
  set_status(:info, message)
end
logger() click to toggle source
# File lib/checkups/checkup.rb, line 91
def logger
  @logger ||= Checkups.configuration.logger
end
need_notification?() click to toggle source
# File lib/checkups/checkup.rb, line 95
def need_notification?
  @status_message && NotificationTimer.new(@notify_frequency, @status).now?
end
notifier() click to toggle source
# File lib/checkups/checkup.rb, line 87
def notifier
  @notifier ||= Checkups.configuration.notifier
end
ok() click to toggle source
# File lib/checkups/checkup.rb, line 64
def ok
  set_status(:ok, nil)
end
send_notification() click to toggle source
# File lib/checkups/checkup.rb, line 81
def send_notification
  puts "#{status}#{status_message ? ': ' + status_message : ''}" if verbose

  notifier.notify(self) if need_notification?
end
set_status(status, message) click to toggle source
# File lib/checkups/checkup.rb, line 99
def set_status(status, message)
  @status_message = message
  @status = status
end
warn(message)
Alias for: warning
warning(message) click to toggle source
# File lib/checkups/checkup.rb, line 72
def warning(message)
  set_status(:warning, message)
end
Also aliased as: warn