Sha256: 1c99c1a6a1d8427cca54c28447b87d009978ffcb4affa04f029e7391e86d98ec
Contents?: true
Size: 1.18 KB
Versions: 2
Compression:
Stored size: 1.18 KB
Contents
require 'liquid/logger' class HealthCheck class Result attr_reader :message attr_reader :exception def initialize(healthy, message, exception) @healthy = healthy @message = message @exception = exception end def healthy? @healthy end def to_s "Result{isHealthy=#{healthy?},message=#{message.inspect},exception=#{exception.inspect}}" end end @@checks = {} @@callbacks = [] def self.inherited(child) @@checks[child.name.demodulize] = child end def self.callback(cb = nil, &block) @@callbacks << (cb || block) end def self.run @@checks.inject({}) do |result, (name, handler)| result[name] = handler.new.execute result end end def self.poll(interval = 5) loop do sleep(interval) trigger end end def self.trigger results = run @@callbacks.each do |cb| begin cb.call(results) rescue => e $log.exception(e, "failed to run health check callback") end end end def self.healthy? run.values.all?(&:healthy?) end def execute check rescue => e Result.new(false, "failed to execute check", e) end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
liquid-ext-3.4.2 | lib/liquid/health_checks.rb |
liquid-ext-3.4.1 | lib/liquid/health_checks.rb |