diff options
author | Louise Crow <louise.crow@gmail.com> | 2014-12-03 09:22:41 +0000 |
---|---|---|
committer | Louise Crow <louise.crow@gmail.com> | 2014-12-03 09:22:41 +0000 |
commit | 7414ed478f212be2b48c95fafde15726b348b197 (patch) | |
tree | 1d89b90f604b837b097fb4274775c4f3b3a319d6 /lib/health_checks | |
parent | 479c9cd4567e2042d00c347f25a411373a6b1df9 (diff) | |
parent | d05082c1cf1ddec789e547b54943f6e7d5bdffc1 (diff) |
Merge branch 'release/0.20'0.20.0.0
Conflicts:
config/general.yml-example
Diffstat (limited to 'lib/health_checks')
-rw-r--r-- | lib/health_checks/checks/days_ago_check.rb | 28 | ||||
-rw-r--r-- | lib/health_checks/health_checkable.rb | 28 | ||||
-rw-r--r-- | lib/health_checks/health_checks.rb | 37 |
3 files changed, 93 insertions, 0 deletions
diff --git a/lib/health_checks/checks/days_ago_check.rb b/lib/health_checks/checks/days_ago_check.rb new file mode 100644 index 000000000..793fff586 --- /dev/null +++ b/lib/health_checks/checks/days_ago_check.rb @@ -0,0 +1,28 @@ +module HealthChecks + module Checks + class DaysAgoCheck + include HealthChecks::HealthCheckable + + attr_reader :days, :subject + + def initialize(args = {}, &block) + @days = args.fetch(:days) { 1 } + @subject = block + super(args) + end + + def failure_message + "#{ super }: #{ subject.call }" + end + + def success_message + "#{ super }: #{ subject.call }" + end + + def check + subject.call >= days.days.ago + end + + end + end +end diff --git a/lib/health_checks/health_checkable.rb b/lib/health_checks/health_checkable.rb new file mode 100644 index 000000000..5d674ca32 --- /dev/null +++ b/lib/health_checks/health_checkable.rb @@ -0,0 +1,28 @@ +module HealthChecks + module HealthCheckable + + attr_accessor :failure_message, :success_message + + def initialize(args = {}) + self.failure_message = args.fetch(:failure_message) { _('Failed') } + self.success_message = args.fetch(:success_message) { _('Success') } + end + + def name + self.class.to_s + end + + def check + raise NotImplementedError + end + + def ok? + check ? true : false + end + + def message + ok? ? success_message : failure_message + end + + end +end diff --git a/lib/health_checks/health_checks.rb b/lib/health_checks/health_checks.rb new file mode 100644 index 000000000..6f0c9de8e --- /dev/null +++ b/lib/health_checks/health_checks.rb @@ -0,0 +1,37 @@ +require 'health_checkable' + +Dir[File.dirname(__FILE__) + '/checks/*.rb'].each do |file| + require file +end + +module HealthChecks + extend self + + def all + @checks ||= [] + end + + def add(check) + if assert_valid_check(check) + all << check + check + else + false + end + end + + def each(&block) + all.each(&block) + end + + def ok? + all.all? { |check| check.ok? } + end + + private + + def assert_valid_check(check) + check.respond_to?(:check) + end + +end |