Class: Checkups::Checkup

Inherits:
Object
  • Object
show all
Defined in:
lib/checkups/checkup.rb

Direct Known Subclasses

Performance

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(verbose: false) ⇒ Checkup

Returns a new instance of Checkup.



29
30
31
32
33
34
# File 'lib/checkups/checkup.rb', line 29

def initialize(verbose: false)
  @notify_frequency = :always
  @verbose = verbose
  @name = nil
  ok
end

Instance Attribute Details

#nameObject (readonly)

Returns the value of attribute name.



9
10
11
# File 'lib/checkups/checkup.rb', line 9

def name
  @name
end

#statusObject (readonly)

Returns the value of attribute status.



9
10
11
# File 'lib/checkups/checkup.rb', line 9

def status
  @status
end

#status_messageObject (readonly)

Returns the value of attribute status_message.



9
10
11
# File 'lib/checkups/checkup.rb', line 9

def status_message
  @status_message
end

#urlObject (readonly)

Returns the value of attribute url.



9
10
11
# File 'lib/checkups/checkup.rb', line 9

def url
  @url
end

#verboseObject (readonly)

Returns the value of attribute verbose.



9
10
11
# File 'lib/checkups/checkup.rb', line 9

def verbose
  @verbose
end

Class Method Details

.checkups_by_frequency(frequency, _verbose: false) ⇒ Object

TODO: Remove verbose from method signature



20
21
22
23
# 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

.dailyObject



15
16
17
# File 'lib/checkups/checkup.rb', line 15

def self.daily
  checkups_by_frequency(:daily)
end

.frequencyObject



25
26
27
# File 'lib/checkups/checkup.rb', line 25

def self.frequency
  :never
end

.hourlyObject



11
12
13
# File 'lib/checkups/checkup.rb', line 11

def self.hourly
  checkups_by_frequency(:hourly)
end

Instance Method Details

#checkObject



54
55
56
# File 'lib/checkups/checkup.rb', line 54

def check
  ok
end

#check_and_notify!(&block) ⇒ Object



36
37
38
39
40
41
# 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_messageObject



58
59
60
# File 'lib/checkups/checkup.rb', line 58

def notify_message
  "Checkup #{@status.to_s.capitalize}: " + @status_message
end

#passed?Boolean

Returns:

  • (Boolean)


43
44
45
46
47
48
49
50
51
52
# 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