healthchecker 1.1.2 → 1.1.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5cc7f6e889adb52b145323143f46f2f0b7cbaec5
4
- data.tar.gz: e038ebc0a304754cfe75b1abbfa4fe848782e8a9
3
+ metadata.gz: 2b2c42adf9ab5a9dd7f02441d11b3e4a24c14555
4
+ data.tar.gz: 1b1f902feb8f5f38e29504746eab2f510420ca3c
5
5
  SHA512:
6
- metadata.gz: 1ce3ae762d7e41f1b01c68c16a148b82783733b2956a8003260715d7b00781e11a2706f8e57a09979cb86b016f1ca4086e8d4fe07b07c34d9b1cd02e52283fa4
7
- data.tar.gz: bf9f479fa4edf7399cf0310a6906a82a3a0fb8f63884c04e30213701c54b6f9dd58b939306b14ef38ed41dd1989dc23736e092dd64182958dae4c9bb37f93c1b
6
+ metadata.gz: 45eb13eb6df288f250858b7d1108efc5de42598a4e4170e75ba7b343cc9a1f08d124f8424bcb43116e65d0812e02d3afb8f3162d8105c59afbb83107c2c71e10
7
+ data.tar.gz: 3d9a9d5fdec0ce8060862d897a9d61a81c08e584cef6d09a219f48205c78624d8a2bad96884fdd41701982ab7ab6cb4c2e31e6ae6c43ea6e9858c0fd7593dcfd
@@ -6,19 +6,53 @@ module Healthchecker
6
6
  end
7
7
 
8
8
  def current_status
9
+ Healthchecker.configuration.metrics.reduce(uptime) { |status, metric|
10
+ if ConfigurableMetrics.method_defined? metric
11
+ status = status.merge(ConfigurableMetrics.send metric)
12
+ else
13
+ supported_metrics = ConfigurableMetrics.public_instance_methods
14
+ message = "#{metric} is not a supported metric. Supported metrics are #{supported_metrics}"
15
+ raise Healthchecker::ConfigurationError, message
16
+ end
17
+ status
18
+ }
19
+ end
20
+
21
+ def uptime
9
22
  {
10
- redis: {
11
- ok: (Redis.current.ping == 'PONG'),
12
- config: Redis.current.client.options,
13
- },
14
- resque_redis: {
15
- ok: (Resque.redis.ping == 'PONG'),
16
- config: Resque.redis.client.options,
17
- },
18
- uptime: (Time.now - Healthchecker::APPLICATION_STARTED_AT),
23
+ uptime: Time.now - Healthchecker::APPLICATION_STARTED_AT
19
24
  }
20
25
  end
21
26
 
27
+ module ConfigurableMetrics
28
+ def redis
29
+ {
30
+ redis: {
31
+ ok: Redis.current.ping == 'PONG',
32
+ config: Redis.current.client.options
33
+ }
34
+ }
35
+ end
22
36
 
37
+ def resque
38
+ {
39
+ resque_redis: {
40
+ ok: Resque.redis.ping == 'PONG',
41
+ config: Resque.redis.client.options
42
+ }
43
+ }
44
+ end
45
+
46
+ def sidekiq
47
+ redis = Sidekiq.redis { |conn| conn }
48
+
49
+ {
50
+ sidekiq_redis: {
51
+ ok: redis.ping == 'PONG',
52
+ config: redis.client.options
53
+ }
54
+ }
55
+ end
56
+ end
23
57
  end
24
58
  end
@@ -5,7 +5,7 @@ module Healthchecker::Checks
5
5
 
6
6
  def client
7
7
  if options[:rsolr_client]
8
- options[:rsolr_client]
8
+ options[:rsolr_client]
9
9
  elsif options[:url]
10
10
  RSolr.connect(url: options[:url])
11
11
  else
@@ -14,8 +14,11 @@ module Healthchecker::Checks
14
14
  end
15
15
 
16
16
  def check!
17
+ msg = "Could not connect to solr"
17
18
  ping_success = client.head("admin/ping", :headers => {"Cache-Control" => "If-None-Match"}).response[:status] == 200
18
- raise "Could not connect to solr" unless ping_success
19
+ raise msg unless ping_success
20
+ rescue => e
21
+ raise msg
19
22
  end
20
23
  end
21
24
  end
@@ -0,0 +1,11 @@
1
+ module Healthchecker
2
+ class ConfigurationError < StandardError; end
3
+
4
+ class Configuration
5
+ attr_accessor :metrics
6
+
7
+ def initialize
8
+ @metrics = [:redis, :resque]
9
+ end
10
+ end
11
+ end
@@ -1,3 +1,3 @@
1
1
  module Healthchecker
2
- VERSION = "1.1.2"
2
+ VERSION = "1.1.4"
3
3
  end
data/lib/healthchecker.rb CHANGED
@@ -1,4 +1,5 @@
1
- require "healthchecker/engine"
1
+ require 'healthchecker/engine'
2
+ require 'healthchecker/configuration'
2
3
  require 'healthchecker/check'
3
4
  require 'healthchecker/checks/redis'
4
5
  require 'healthchecker/checks/migration'
@@ -12,6 +13,11 @@ module Healthchecker
12
13
  APPLICATION_STARTED_AT = Time.now
13
14
 
14
15
  mattr_accessor :checks
16
+
17
+ class << self
18
+ attr_writer :configuration
19
+ end
20
+
15
21
  self.checks = []
16
22
 
17
23
  def self.add_check(name_or_class, options={})
@@ -22,6 +28,20 @@ module Healthchecker
22
28
  self.checks.map(&:perform_check).compact
23
29
  end
24
30
 
31
+ def self.configuration
32
+ @configuration ||= Configuration.new
33
+ end
34
+
35
+ def self.reset
36
+ @configuration = Configuration.new
37
+ end
38
+
39
+ def self.configure
40
+ yield(configuration)
41
+ end
42
+
43
+ private
44
+
25
45
  def self.lookup_class(name_or_class)
26
46
  return name_or_class if name_or_class.respond_to?(:new)
27
47
  "Healthchecker::Checks::#{name_or_class.to_s.capitalize}".constantize
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: healthchecker
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.2
4
+ version: 1.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Will Bryant
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-08-18 00:00:00.000000000 Z
11
+ date: 2018-03-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -120,6 +120,7 @@ files:
120
120
  - lib/healthchecker/checks/redis.rb
121
121
  - lib/healthchecker/checks/s3.rb
122
122
  - lib/healthchecker/checks/solr.rb
123
+ - lib/healthchecker/configuration.rb
123
124
  - lib/healthchecker/engine.rb
124
125
  - lib/healthchecker/version.rb
125
126
  - lib/tasks/healthchecker_tasks.rake
@@ -143,7 +144,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
143
144
  version: '0'
144
145
  requirements: []
145
146
  rubyforge_project:
146
- rubygems_version: 2.4.8
147
+ rubygems_version: 2.6.14
147
148
  signing_key:
148
149
  specification_version: 4
149
150
  summary: Standardized, healthcheck end-point for rails apps