Module: StatusPage

Defined in:
lib/status-page/engine.rb,
lib/status-page/monitor.rb,
lib/status-page/version.rb,
lib/status-page/configuration.rb,
lib/status-page/services/base.rb,
lib/status-page/services/cache.rb,
lib/status-page/services/redis.rb,
lib/status-page/services/resque.rb,
lib/status-page/services/sidekiq.rb,
lib/status-page/services/database.rb,
app/controllers/status_page/status_controller.rb

Defined Under Namespace

Modules: Services Classes: Configuration, Engine, StatusController

Constant Summary collapse

STATUSES =
{
  ok: 'OK',
  error: 'ERROR'
}.freeze
VERSION =
'0.1.5'

Class Method Summary collapse

Class Method Details

.check(request: nil) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# 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

.configObject



8
9
10
11
12
# File 'lib/status-page/monitor.rb', line 8

def config
  return @config if defined?(@config)
  @config = Configuration.new
  @config
end

.configure(&block) ⇒ Object



14
15
16
# File 'lib/status-page/monitor.rb', line 14

def configure(&block)
  config.instance_exec(&block)
end