Class: HealthReporter

Inherits:
Object
  • Object
show all
Includes:
Singleton
Defined in:
lib/health_reporter.rb,
lib/health_reporter/version.rb,
lib/health_reporter/reporter.rb

Constant Summary collapse

VERSION =
'0.3.1'
@@self_test =
lambda{ true }
@@unhealthy_cache_ttl =
30
@@healthy_cache_ttl =
60
@@dependencies =
{}
@@last_check_time =
nil
@@healthy =

Initialized as nil so that first call will set it

nil
@@semaphore =
Mutex.new

Class Method Summary collapse

Class Method Details

.clear_cacheObject



40
41
42
43
# File 'lib/health_reporter/reporter.rb', line 40

def self.clear_cache
  @@last_check_time     = nil
  @@healthy             = nil
end

.clear_dependenciesObject



45
46
47
# File 'lib/health_reporter/reporter.rb', line 45

def self.clear_dependencies
  @@dependencies = {}
end

.dependenciesObject



59
60
61
# File 'lib/health_reporter/reporter.rb', line 59

def self.dependencies
  @@dependencies
end

.healthy?Boolean

Returns:

  • (Boolean)


69
70
71
72
73
74
# File 'lib/health_reporter/reporter.rb', line 69

def self.healthy?
  @@semaphore.synchronize {
    perform_health_check if @@healthy.nil? or cache_ttl_expired
    @@healthy
  }
end

.healthy_cache_ttlObject



24
25
26
# File 'lib/health_reporter/reporter.rb', line 24

def self.healthy_cache_ttl
  @@healthy_cache_ttl
end

.healthy_cache_ttl=(healthy_cache_ttl) ⇒ Object



28
29
30
# File 'lib/health_reporter/reporter.rb', line 28

def self.healthy_cache_ttl=(healthy_cache_ttl)
  @@healthy_cache_ttl = healthy_cache_ttl
end

.register_dependencies(provided_dependencies = []) ⇒ Object



49
50
51
52
53
54
55
56
57
# File 'lib/health_reporter/reporter.rb', line 49

def self.register_dependencies(provided_dependencies = [])
  provided_dependencies.map{ |dependency|
    symbolized_dependency = Hash[dependency.map{|(k,v)| [k.to_sym,v]}]
    raise 'url not defined for dependency' unless symbolized_dependency[:url]
    add_defaults(symbolized_dependency)
    dependencies[symbolized_dependency[:url]] = symbolized_dependency
    dependencies[symbolized_dependency[:url]].delete(:url)
  }
end

.register_dependency(url:, code: 200, timeout: 2) ⇒ Object



63
64
65
66
67
# File 'lib/health_reporter/reporter.rb', line 63

def self.register_dependency(url:, code: 200, timeout: 2)
  $stderr.puts "The HealthReporter method register_dependency is depreciated. Use fully featured register_dependencies method instead"
  raise "Configured URL #{url} is invalid" unless url =~ URI::regexp
  dependencies[url] = { :code => code, :timeout => timeout }
end

.self_testObject



8
9
10
# File 'lib/health_reporter/reporter.rb', line 8

def self.self_test
  @@self_test
end

.self_test=(self_test) ⇒ Object



12
13
14
# File 'lib/health_reporter/reporter.rb', line 12

def self.self_test=(self_test)
  @@self_test = self_test
end

.unhealthy_cache_ttlObject



16
17
18
# File 'lib/health_reporter/reporter.rb', line 16

def self.unhealthy_cache_ttl
  @@unhealthy_cache_ttl
end

.unhealthy_cache_ttl=(unhealthy_cache_ttl) ⇒ Object



20
21
22
# File 'lib/health_reporter/reporter.rb', line 20

def self.unhealthy_cache_ttl=(unhealthy_cache_ttl)
  @@unhealthy_cache_ttl = unhealthy_cache_ttl
end