health_check 1.2.0 → 1.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.travis.yml +1 -3
- data/README.rdoc +31 -14
- data/config/routes.rb +1 -4
- data/health_check.gemspec +1 -1
- data/lib/health_check.rb +7 -2
- data/lib/health_check/health_check_routes.rb +17 -0
- data/lib/health_check/utils.rb +3 -3
- data/lib/health_check/version.rb +1 -1
- data/test/migrate/twelve/011_create_roles.roles.rb +11 -0
- data/test/{rails_4.0-beta.gemfile → rails_4.0.gemfile} +1 -1
- data/test/setup_railsapp +2 -2
- data/test/test_with_railsapp +7 -0
- metadata +11 -8
data/.travis.yml
CHANGED
@@ -62,12 +62,10 @@ matrix:
|
|
62
62
|
|
63
63
|
# rails 4.0 - in development as of 5 mar 2013 - ruby 2.0
|
64
64
|
- rvm: 2.0.0
|
65
|
-
gemfile: test/rails_4.0
|
65
|
+
gemfile: test/rails_4.0.gemfile
|
66
66
|
env: RUBYGEMS_VERSION=
|
67
67
|
|
68
68
|
- rvm: jruby-19mode
|
69
69
|
gemfile: test/rails_3.2.gemfile
|
70
70
|
env: RUBYGEMS_VERSION=1.8.25
|
71
71
|
|
72
|
-
allow_failures:
|
73
|
-
- gemfile: test/rails_4.0-beta.gemfile
|
data/README.rdoc
CHANGED
@@ -9,13 +9,17 @@ health_check provides various monitoring URIs, for example:
|
|
9
9
|
curl localhost:3000/health_check
|
10
10
|
success
|
11
11
|
|
12
|
-
curl localhost:3000/health_check/all
|
13
|
-
success
|
12
|
+
curl localhost:3000/health_check/all.json
|
13
|
+
{"healthy":true,"message":"success"}
|
14
14
|
|
15
|
-
curl localhost:3000/health_check/database_cache_migration
|
16
|
-
|
15
|
+
curl localhost:3000/health_check/database_cache_migration.xml
|
16
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
17
|
+
<hash>
|
18
|
+
<healthy type="boolean">true</healthy>
|
19
|
+
<message>success</message>
|
20
|
+
</hash>
|
17
21
|
|
18
|
-
On failure a 500 http status is returned with a simple
|
22
|
+
On failure a 500 http status is returned with a simple explanation of the failure
|
19
23
|
|
20
24
|
curl localhost:3000/health_check/fail
|
21
25
|
health_check failed: invalid argument to health_test.
|
@@ -25,18 +29,19 @@ The health_check controller disables sessions and logging for its actions to min
|
|
25
29
|
== Checks
|
26
30
|
|
27
31
|
* standard (default) - site, database and migrations checks are run plus email if settings have been changed
|
28
|
-
* all / full - all checks are run
|
32
|
+
* all / full - all checks are run (can be overriden in config block)
|
29
33
|
* database - checks that the current migration level can be read from the database
|
30
34
|
* email - basic check of email - :test returns true, :sendmail checks file is present and executable, :smtp sends HELO command to server and checks response
|
31
35
|
* migration - checks that the database migration level matches that in db/migrations
|
32
36
|
* cache - checks that a value can be written to the cache
|
33
37
|
* site - checks rails is running sufficiently to render text
|
38
|
+
* custom - runs checks added via config.add_custom_check
|
34
39
|
|
35
40
|
The email gateway is not checked unless the smtp settings have been changed.
|
36
|
-
Specify full or include email in the list of checks to
|
41
|
+
Specify full or include email in the list of checks to verify the smtp settings
|
37
42
|
(eg use 127.0.0.1 instead of localhost).
|
38
43
|
|
39
|
-
Note: rails 4.0 also checks migrations and throws
|
44
|
+
Note: rails 4.0 also checks migrations and throws an ActiveRecord::PendingMigrationError exception (http error 500) if there is an error
|
40
45
|
|
41
46
|
== Installation
|
42
47
|
|
@@ -81,19 +86,22 @@ To change the configuration of health_check, create a file `config/initializers/
|
|
81
86
|
config.success = 'success'
|
82
87
|
|
83
88
|
# Timeout in seconds used when checking smtp server
|
84
|
-
|
89
|
+
config.smtp_timeout = 30.0
|
85
90
|
|
86
91
|
# http status code used when plain text error message is output
|
87
92
|
# Set to 200 if you want your want to distinguish between partial (text does not include success) and
|
88
93
|
# total failure of rails application (http status of 500 etc)
|
89
94
|
|
90
|
-
|
95
|
+
config.http_status_for_error_text = 500
|
91
96
|
|
92
97
|
# http status code used when an error object is output (json or xml)
|
93
98
|
# Set to 200 if you want your want to distinguish between partial (healthy property == false) and
|
94
99
|
# total failure of rails application (http status of 500 etc)
|
95
100
|
|
96
|
-
|
101
|
+
config.http_status_for_error_object = 500
|
102
|
+
|
103
|
+
# You can set what tests are run with the 'full' or 'all' parameter
|
104
|
+
self.full_checks = ['database', 'migrations', 'custom', 'email', 'cache']
|
97
105
|
|
98
106
|
# Add one or more custom checks that return a blank string if ok, or an error message if there is an error
|
99
107
|
config.add_custom_check do
|
@@ -104,6 +112,9 @@ To change the configuration of health_check, create a file `config/initializers/
|
|
104
112
|
|
105
113
|
You may call add_custom_check multiple times with different tests. These tests will be included in the default list ("standard").
|
106
114
|
|
115
|
+
If you have a catchall route in a rails 3.0 or later application then add the following line above the catch all route (in `config/routes.rb`):
|
116
|
+
health_check_routes
|
117
|
+
|
107
118
|
== Uptime Monitoring
|
108
119
|
|
109
120
|
Use a website monitoring service to check the url regularly for the word "success" (without the quotes) rather than just a 200 http status so
|
@@ -175,11 +186,13 @@ See https://github.com/ianheggie/health_check/wiki/Ajax-Example for an Ajax exam
|
|
175
186
|
|
176
187
|
== Testing
|
177
188
|
|
178
|
-
=== Automated testing
|
189
|
+
=== Automated testing and other checks
|
179
190
|
|
180
|
-
|
191
|
+
Travis CI runs the tests: {<img src="https://travis-ci.org/ianheggie/health_check.png">}[https://travis-ci.org/ianheggie/health_check]
|
181
192
|
|
182
|
-
Code Climate
|
193
|
+
Code Climate monitors code quality: {<img src="https://codeclimate.com/github/ianheggie/health_check.png" />}[https://codeclimate.com/github/ianheggie/health_check]
|
194
|
+
|
195
|
+
Gemnasium monitors gem dependencies {<img src="https://gemnasium.com/ianheggie/health_check.png">}[https://gemnasium.com/ianheggie/health_check]
|
183
196
|
|
184
197
|
=== Manual testing
|
185
198
|
|
@@ -219,3 +232,7 @@ The command `rake test` will also launch these tests, except it cannot install t
|
|
219
232
|
Copyright (c) 2010-2013 Ian Heggie, released under the MIT license.
|
220
233
|
See MIT-LICENSE for details.
|
221
234
|
|
235
|
+
== Contributors
|
236
|
+
|
237
|
+
Thanks go to the various people who have given feedback and suggestions via the issues list and pull requests
|
238
|
+
|
data/config/routes.rb
CHANGED
@@ -1,8 +1,5 @@
|
|
1
1
|
if defined?(HealthCheck::Engine)
|
2
2
|
Rails.application.routes.draw do
|
3
|
-
|
4
|
-
get 'health_check.:format', :to => 'health_check/health_check#index'
|
5
|
-
get 'health_check/:checks', :to => 'health_check/health_check#index'
|
6
|
-
get 'health_check/:checks.:format', :to => 'health_check/health_check#index'
|
3
|
+
health_check_routes
|
7
4
|
end
|
8
5
|
end
|
data/health_check.gemspec
CHANGED
@@ -13,7 +13,7 @@ Gem::Specification.new do |gem|
|
|
13
13
|
gem.description = <<-EOF
|
14
14
|
Simple health check of Rails app for uptime monitoring with Pingdom, NewRelic, EngineYard or uptime.openacs.org etc.
|
15
15
|
EOF
|
16
|
-
gem.homepage = "
|
16
|
+
gem.homepage = "http://ianheggie.github.io/health_check/"
|
17
17
|
|
18
18
|
gem.files = `git ls-files`.split($/)
|
19
19
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
data/lib/health_check.rb
CHANGED
@@ -5,6 +5,7 @@ module HealthCheck
|
|
5
5
|
|
6
6
|
if Rails.version >= '3.0'
|
7
7
|
class Engine < Rails::Engine
|
8
|
+
cattr_accessor :routes_defined
|
8
9
|
end
|
9
10
|
end
|
10
11
|
|
@@ -26,12 +27,14 @@ module HealthCheck
|
|
26
27
|
|
27
28
|
# Array of custom check blocks
|
28
29
|
mattr_accessor :custom_checks
|
30
|
+
mattr_accessor :full_checks
|
29
31
|
self.custom_checks = [ ]
|
32
|
+
self.full_checks = ['database', 'migrations', 'custom', 'email', 'cache']
|
30
33
|
|
31
34
|
def self.add_custom_check(&block)
|
32
35
|
custom_checks << block
|
33
36
|
end
|
34
|
-
|
37
|
+
|
35
38
|
def self.setup
|
36
39
|
yield self
|
37
40
|
end
|
@@ -42,7 +45,9 @@ require "health_check/version"
|
|
42
45
|
require 'health_check/utils'
|
43
46
|
require 'health_check/health_check_controller'
|
44
47
|
|
45
|
-
|
48
|
+
if defined?(HealthCheck::Engine)
|
49
|
+
require 'health_check/health_check_routes'
|
50
|
+
else
|
46
51
|
require 'health_check/add_23_routes'
|
47
52
|
end
|
48
53
|
|
@@ -0,0 +1,17 @@
|
|
1
|
+
if defined?(HealthCheck::Engine)
|
2
|
+
|
3
|
+
module ActionDispatch::Routing
|
4
|
+
class Mapper
|
5
|
+
def health_check_routes
|
6
|
+
unless HealthCheck::Engine.routes_defined
|
7
|
+
HealthCheck::Engine.routes_defined = true
|
8
|
+
get 'health_check', :to => 'health_check/health_check#index'
|
9
|
+
get 'health_check.:format', :to => 'health_check/health_check#index'
|
10
|
+
get 'health_check/:checks', :to => 'health_check/health_check#index'
|
11
|
+
get 'health_check/:checks.:format', :to => 'health_check/health_check#index'
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
data/lib/health_check/utils.rb
CHANGED
@@ -44,7 +44,7 @@ module HealthCheck
|
|
44
44
|
errors << custom_check.call(self)
|
45
45
|
end
|
46
46
|
when "all", "full"
|
47
|
-
errors << HealthCheck::Utils.process_checks(
|
47
|
+
errors << HealthCheck::Utils.process_checks(HealthCheck.full_checks.join('_'))
|
48
48
|
else
|
49
49
|
return "invalid argument to health_test. "
|
50
50
|
end
|
@@ -67,13 +67,13 @@ module HealthCheck
|
|
67
67
|
end
|
68
68
|
|
69
69
|
def self.get_database_version
|
70
|
-
ActiveRecord::Migrator.current_version
|
70
|
+
ActiveRecord::Migrator.current_version if defined?(ActiveRecord)
|
71
71
|
end
|
72
72
|
|
73
73
|
def self.get_migration_version(dir = self.db_migrate_path)
|
74
74
|
latest_migration = nil
|
75
75
|
Dir[File.join(dir, "[0-9]*_*.rb")].each do |f|
|
76
|
-
l = f.scan(/0*([0-9]+)_[
|
76
|
+
l = f.scan(/0*([0-9]+)_[_.a-zA-Z0-9]*.rb/).first.first rescue -1
|
77
77
|
latest_migration = l if !latest_migration || l.to_i > latest_migration.to_i
|
78
78
|
end
|
79
79
|
latest_migration
|
data/lib/health_check/version.rb
CHANGED
data/test/setup_railsapp
CHANGED
@@ -227,12 +227,12 @@ cat > public/ajax_example.html <<'EOF'
|
|
227
227
|
<ul>
|
228
228
|
<li><a href="#" onclick="dynamic_call('text', 'http://localhost:3000/health_check/site');">Minimal health check should always work</a>
|
229
229
|
(<a href="#" onclick="dynamic_call('json', 'http://localhost:3000/health_check/site.json');">json</a>,
|
230
|
-
<a href="#" onclick="dynamic_call('
|
230
|
+
<a href="#" onclick="dynamic_call('xml', 'http://localhost:3000/health_check/site.xml');">xml</a>,
|
231
231
|
<a href="#" onclick="dynamic_call('text', 'http://localhost:3000/health_check/site.html');">html</a>)
|
232
232
|
|
233
233
|
<li><a href="#" onclick="dynamic_call('text', 'http://localhost:3000/health_check/fail');">Force health check to fail!</a>
|
234
234
|
(<a href="#" onclick="dynamic_call('json', 'http://localhost:3000/health_check/fail.json');">json</a>,
|
235
|
-
<a href="#" onclick="dynamic_call('
|
235
|
+
<a href="#" onclick="dynamic_call('xml', 'http://localhost:3000/health_check/fail.xml');">xml</a>,
|
236
236
|
<a href="#" onclick="dynamic_call('text', 'http://localhost:3000/health_check/fail.html');">html</a>)
|
237
237
|
<li>Last results sent to success:<ul>
|
238
238
|
<li><b>Data:</b><span id=data_success></span>
|
data/test/test_with_railsapp
CHANGED
@@ -129,6 +129,13 @@ echo
|
|
129
129
|
|
130
130
|
echo 'TESTING health_check/migration should fail without all migrations ...'
|
131
131
|
cp $base_dir/test/migrate/twelve/* db/migrate
|
132
|
+
|
133
|
+
case "$actual_rails_version" in
|
134
|
+
*' '[12].*|*' '3.[01]*)
|
135
|
+
echo removing db/migrate/*.*.rb "($actual_rails_version does not support extra dots in migration names)"
|
136
|
+
rm -f db/migrate/*.*.rb
|
137
|
+
;;
|
138
|
+
esac
|
132
139
|
ls db/migrate
|
133
140
|
$testurl ${host}/health_check/migration 550 text/plain failed
|
134
141
|
echo
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: health_check
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 25
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 1.
|
8
|
+
- 3
|
9
|
+
- 1
|
10
|
+
version: 1.3.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Ian Heggie
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2013-
|
18
|
+
date: 2013-09-25 00:00:00 +10:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -122,19 +122,21 @@ files:
|
|
122
122
|
- lib/health_check.rb
|
123
123
|
- lib/health_check/add_23_routes.rb
|
124
124
|
- lib/health_check/health_check_controller.rb
|
125
|
+
- lib/health_check/health_check_routes.rb
|
125
126
|
- lib/health_check/utils.rb
|
126
127
|
- lib/health_check/version.rb
|
127
128
|
- test/fake_smtp_server
|
128
129
|
- test/init_variables
|
129
130
|
- test/migrate/empty/do_not_remove.txt
|
130
131
|
- test/migrate/nine/9_create_countries.rb
|
132
|
+
- test/migrate/twelve/011_create_roles.roles.rb
|
131
133
|
- test/migrate/twelve/012_create_users.rb
|
132
134
|
- test/migrate/twelve/9_create_countries.rb
|
133
135
|
- test/rails_2.3.gemfile
|
134
136
|
- test/rails_3.0.gemfile
|
135
137
|
- test/rails_3.1.gemfile
|
136
138
|
- test/rails_3.2.gemfile
|
137
|
-
- test/rails_4.0
|
139
|
+
- test/rails_4.0.gemfile
|
138
140
|
- test/setup_railsapp
|
139
141
|
- test/test_helper.rb
|
140
142
|
- test/test_with_railsapp
|
@@ -142,7 +144,7 @@ files:
|
|
142
144
|
- test/unit/health_check_controller_test.rb
|
143
145
|
- test/unit/routes_test.rb
|
144
146
|
has_rdoc: true
|
145
|
-
homepage:
|
147
|
+
homepage: http://ianheggie.github.io/health_check/
|
146
148
|
licenses: []
|
147
149
|
|
148
150
|
post_install_message:
|
@@ -180,13 +182,14 @@ test_files:
|
|
180
182
|
- test/init_variables
|
181
183
|
- test/migrate/empty/do_not_remove.txt
|
182
184
|
- test/migrate/nine/9_create_countries.rb
|
185
|
+
- test/migrate/twelve/011_create_roles.roles.rb
|
183
186
|
- test/migrate/twelve/012_create_users.rb
|
184
187
|
- test/migrate/twelve/9_create_countries.rb
|
185
188
|
- test/rails_2.3.gemfile
|
186
189
|
- test/rails_3.0.gemfile
|
187
190
|
- test/rails_3.1.gemfile
|
188
191
|
- test/rails_3.2.gemfile
|
189
|
-
- test/rails_4.0
|
192
|
+
- test/rails_4.0.gemfile
|
190
193
|
- test/setup_railsapp
|
191
194
|
- test/test_helper.rb
|
192
195
|
- test/test_with_railsapp
|