Class: HealthReporter
- Inherits:
-
Object
- Object
- HealthReporter
- 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
- .clear_cache ⇒ Object
- .clear_dependencies ⇒ Object
- .dependencies ⇒ Object
- .healthy? ⇒ Boolean
- .healthy_cache_ttl ⇒ Object
- .healthy_cache_ttl=(healthy_cache_ttl) ⇒ Object
- .register_dependencies(provided_dependencies = []) ⇒ Object
- .register_dependency(url:, code: 200, timeout: 2) ⇒ Object
- .self_test ⇒ Object
- .self_test=(self_test) ⇒ Object
- .unhealthy_cache_ttl ⇒ Object
- .unhealthy_cache_ttl=(unhealthy_cache_ttl) ⇒ Object
Class Method Details
.clear_cache ⇒ Object
40 41 42 43 |
# File 'lib/health_reporter/reporter.rb', line 40 def self.clear_cache @@last_check_time = nil @@healthy = nil end |
.clear_dependencies ⇒ Object
45 46 47 |
# File 'lib/health_reporter/reporter.rb', line 45 def self.clear_dependencies @@dependencies = {} end |
.dependencies ⇒ Object
59 60 61 |
# File 'lib/health_reporter/reporter.rb', line 59 def self.dependencies @@dependencies end |
.healthy? ⇒ 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_ttl ⇒ Object
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_test ⇒ Object
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_ttl ⇒ Object
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 |