Class: OkComputer::Check

Inherits:
Object
  • Object
show all
Defined in:
lib/ok_computer/check.rb

Constant Summary collapse

CheckNotDefined =
Class.new(StandardError)

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#failure_occurredObject

nil by default, only set to true if the check deems itself failed



8
9
10
# File 'lib/ok_computer/check.rb', line 8

def failure_occurred
  @failure_occurred
end

#messageObject

nil by default, set by #check to control the output



10
11
12
# File 'lib/ok_computer/check.rb', line 10

def message
  @message
end

#registrant_nameObject

to be set by Registry upon registration



6
7
8
# File 'lib/ok_computer/check.rb', line 6

def registrant_name
  @registrant_name
end

#timeObject

Float::NAN by default, set by #run to the elapsed time to run #check



12
13
14
# File 'lib/ok_computer/check.rb', line 12

def time
  @time
end

Instance Method Details

#<=>(check) ⇒ Object



49
50
51
52
53
54
55
# File 'lib/ok_computer/check.rb', line 49

def <=>(check)
  if check.is_a?(CheckCollection)
    -1
  else
    registrant_name.to_s <=> check.registrant_name.to_s
  end
end

#clearObject

Public: Clear any prior failures



77
78
79
80
81
# File 'lib/ok_computer/check.rb', line 77

def clear
  self.failure_occurred = false
  self.message = nil
  self.time = Float::NAN
end

#mark_failureObject

Public: Mark that this check has failed in some way



65
66
67
# File 'lib/ok_computer/check.rb', line 65

def mark_failure
  self.failure_occurred = true
end

#mark_message(message) ⇒ Object

Public: Capture the desired message to display

message - Text of the message to display for this check



72
73
74
# File 'lib/ok_computer/check.rb', line 72

def mark_message(message)
  self.message = message
end

#runObject

Public: Run the check



15
16
17
18
19
20
21
# File 'lib/ok_computer/check.rb', line 15

def run
  clear
  with_benchmarking do
    check
  end
  OkComputer.logger.info "[okcomputer] #{to_text}"
end

#success?Boolean

Public: Whether the check passed

Returns a boolean

Returns:

  • (Boolean)


60
61
62
# File 'lib/ok_computer/check.rb', line 60

def success?
  not failure_occurred
end

#to_json(*args) ⇒ Object

Public: The JSON output of performing the check

Returns a String containing JSON



43
44
45
46
47
# File 'lib/ok_computer/check.rb', line 43

def to_json(*args)
  # NOTE swallowing the arguments that Rails passes by default since we don't care. This may prove to be a bad idea
  # Rails passes stuff like this: {:prefixes=>["ok_computer", "application"], :template=>"show", :layout=>#<Proc>}]
  {registrant_name => {:message => message, :success => success?, :time => time}}.to_json
end

#to_textObject

Public: The text output of performing the check

Returns a String



35
36
37
38
# File 'lib/ok_computer/check.rb', line 35

def to_text
  passfail = success? ? "passed" : "failed"
  I18n.t("okcomputer.check.#{passfail}", registrant_name: registrant_name, message: message, time: "#{time ? sprintf('%.3f', time) : '?'}s")
end

#with_benchmarkingObject

Private: Benchmark the time it takes to run the block



84
85
86
87
88
# File 'lib/ok_computer/check.rb', line 84

def with_benchmarking
  self.time = Benchmark.realtime do
    yield
  end
end