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