module HealthMonitor

Constants

STATUSES
VERSION

Attributes

configuration[RW]

Public Instance Methods

check(request: nil, params: {}) click to toggle source
# File lib/health_monitor/monitor.rb, line 21
def check(request: nil, params: {})
  providers = configuration.providers
  if params[:providers].present?
    providers = providers.select { |provider| params[:providers].include?(provider.name.downcase) }
  end

  results = providers.map { |provider| provider_result(provider, request) }

  {
    results: results.map { |c| c.without(:critical) },
    status: results.any? { |res| res[:status] != STATUSES[:ok] && res[:critical] } ? :service_unavailable : :ok,
    timestamp: Time.now.to_formatted_s(:rfc2822)
  }
end
configure() { |configuration| ... } click to toggle source
# File lib/health_monitor/monitor.rb, line 15
def configure
  self.configuration ||= Configuration.new

  yield configuration if block_given?
end

Private Instance Methods

provider_result(provider, request) click to toggle source
# File lib/health_monitor/monitor.rb, line 38
def provider_result(provider, request)
  monitor = provider
  monitor.request = request
  monitor.check!

  {
    name: provider.name,
    message: '',
    status: STATUSES[:ok],
    critical: provider.critical
  }
rescue StandardError => e
  configuration.error_callback.try(:call, e)

  {
    name: provider.name,
    message: e.message,
    status: STATUSES[:error],
    critical: provider.critical
  }
end