class MiddlewareHealthcheck::MainChecker

Constants

QUERY_STRING_KEY
UNDEFINED_CHECKER_ERROR

Attributes

app[RW]
env[RW]

Public Class Methods

new(app, env) click to toggle source
# File lib/middleware_healthcheck/main_checker.rb, line 10
def initialize(app, env)
  self.app = app
  self.env = env
end

Public Instance Methods

build_error_response() click to toggle source
# File lib/middleware_healthcheck/main_checker.rb, line 40
def build_error_response
  build_text_response(
    configuration.error_response_status,
    errors.join(configuration.errors_delimiter)
  )
end
build_response() click to toggle source
# File lib/middleware_healthcheck/main_checker.rb, line 25
def build_response
  if errors.present?
    build_error_response
  else
    build_success_response
  end
end
build_success_response() click to toggle source
# File lib/middleware_healthcheck/main_checker.rb, line 33
def build_success_response
  build_text_response(
    configuration.success_response_status,
    configuration.success_response_body
  )
end
build_text_response(status, body) click to toggle source
# File lib/middleware_healthcheck/main_checker.rb, line 47
def build_text_response(status, body)
  [status, { 'Content-Type' => 'text/plain' }, [body]]
end
check_health() click to toggle source
# File lib/middleware_healthcheck/main_checker.rb, line 15
def check_health
  if full_check?
    run_all_checkers
  elsif selected_check?
    run_selected_checkers
  end

  build_response
end
configuration() click to toggle source
# File lib/middleware_healthcheck/main_checker.rb, line 102
def configuration
  @configuration ||= MiddlewareHealthcheck.configuration
end
errors() click to toggle source
# File lib/middleware_healthcheck/main_checker.rb, line 90
def errors
  @errors ||= []
end
find_checker_by_name(name) click to toggle source
# File lib/middleware_healthcheck/main_checker.rb, line 72
def find_checker_by_name(name)
  configuration.checkers.each do |checker|
    return checker if checker.to_s.demodulize.underscore.gsub(/_checker$/, '') == name
  end
  errors.push(UNDEFINED_CHECKER_ERROR + name.camelize)
  nil
end
full_check?() click to toggle source
# File lib/middleware_healthcheck/main_checker.rb, line 94
def full_check?
  params[configuration.full_check_param_name].present?
end
params() click to toggle source
# File lib/middleware_healthcheck/main_checker.rb, line 86
def params
  @params ||= Rack::Utils.parse_nested_query(@env[QUERY_STRING_KEY])
end
run_all_checkers() click to toggle source
# File lib/middleware_healthcheck/main_checker.rb, line 51
def run_all_checkers
  run_checkers(configuration.checkers)
end
run_checkers(checkers) click to toggle source
# File lib/middleware_healthcheck/main_checker.rb, line 59
def run_checkers(checkers)
  checkers.each do |checker|
    checker_instance = checker.new(@app, @env)
    errors.push(checker_instance.error) unless checker_instance.healthy?
  end
end
run_selected_checkers() click to toggle source
# File lib/middleware_healthcheck/main_checker.rb, line 55
def run_selected_checkers
  run_checkers(selected_checkers)
end
selected_check?() click to toggle source
# File lib/middleware_healthcheck/main_checker.rb, line 98
def selected_check?
  params[configuration.selected_check_param_name].present?
end
selected_checkers() click to toggle source
# File lib/middleware_healthcheck/main_checker.rb, line 66
def selected_checkers
  selected_checkers_names.map do |checker_name|
    find_checker_by_name(checker_name)
  end.compact
end
selected_checkers_names() click to toggle source
# File lib/middleware_healthcheck/main_checker.rb, line 80
def selected_checkers_names
  @selected_checkers_names ||=
    params[configuration.selected_check_param_name]
    .split(configuration.selected_check_param_split_delimiter)
end