module StatusPage

Constants

STATUSES
VERSION

Public Class Methods

check(request: nil) click to toggle source
# File lib/status-page/monitor.rb, line 18
def check(request: nil)
  if config.interval > 0
    if @cached_status && @cached_status[:timestamp] >= (config.interval || 5).seconds.ago
      return @cached_status
    end
  end

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

  @cached_status = {
    results: results,
    status: results.all? { |result| result[:status] == STATUSES[:ok] } ? :ok : :service_unavailable,
    timestamp: Time.now
  }
  @cached_status
end
config() click to toggle source
# File lib/status-page/monitor.rb, line 8
def config
  return @config if defined?(@config)
  @config = Configuration.new
  @config
end
configure(&block) click to toggle source
# File lib/status-page/monitor.rb, line 14
def configure(&block)
  config.instance_exec(&block)
end

Private Class Methods

provider_result(provider, request) click to toggle source
# File lib/status-page/monitor.rb, line 38
def provider_result(provider, request)
  monitor = provider.new(request: request)
  monitor.check!

  {
    name: provider.service_name,
    message: '',
    status: STATUSES[:ok]
  }
rescue => e
  config.error_callback.call(e) if config.error_callback

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