class GovukHealthcheck::Checkup
Attributes
checks[R]
Public Class Methods
new(checks)
click to toggle source
@param checks [Array] Array of objects/classes that respond to `run`
# File lib/govuk_app_config/govuk_healthcheck/checkup.rb, line 10 def initialize(checks) @checks = checks end
Public Instance Methods
run()
click to toggle source
# File lib/govuk_app_config/govuk_healthcheck/checkup.rb, line 14 def run { status: worst_status, checks: component_statuses, } end
Private Instance Methods
all_components()
click to toggle source
# File lib/govuk_app_config/govuk_healthcheck/checkup.rb, line 31 def all_components checks.map { |check| check.instance_of?(Class) ? check.new : check } end
build_component_status(check)
click to toggle source
# File lib/govuk_app_config/govuk_healthcheck/checkup.rb, line 49 def build_component_status(check) if check.respond_to?(:enabled?) && !check.enabled? { status: :ok, message: "currently disabled" } else begin component_status = details(check).merge(status: check.status) component_status[:message] = check.message if check.respond_to?(:message) component_status rescue StandardError => e { status: :critical, message: e.to_s } end end end
component_statuses()
click to toggle source
# File lib/govuk_app_config/govuk_healthcheck/checkup.rb, line 25 def component_statuses @component_statuses ||= all_components.each_with_object({}) do |check, hash| hash[check.name] = build_component_status(check) end end
details(check)
click to toggle source
# File lib/govuk_app_config/govuk_healthcheck/checkup.rb, line 63 def details(check) check.respond_to?(:details) ? check.details : {} end
status?(status)
click to toggle source
# File lib/govuk_app_config/govuk_healthcheck/checkup.rb, line 45 def status?(status) component_statuses.values.any? { |s| s[:status] == status } end
worst_status()
click to toggle source
# File lib/govuk_app_config/govuk_healthcheck/checkup.rb, line 35 def worst_status if status?(CRITICAL) CRITICAL elsif status?(WARNING) WARNING else OK end end