rails-health-check 1.0.0

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 07f08bf896120383b79826fe4bb10541280c44de
4
+ data.tar.gz: b53071714355fd4799dee721c4b23faaa8333a10
5
+ SHA512:
6
+ metadata.gz: f94a84277c894b2210cecc27383a9d8a0cd1c774be33b07d047a8360fec38c3f7ea17d4e40d7e9b0e5396c2a327e6afe92b27304540cb35545723b8b055b74e7
7
+ data.tar.gz: 7d5d6bb49ea82d1598c3d41811ff8d8399ee78656ab086e8495be63cd01386a9d721b39f6ca462b1edf70ebbff9a16e12d924727460c49566d25ee66984598a3
@@ -0,0 +1,13 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+
11
+ .ruby-version
12
+ .ruby-gemset
13
+ .versions.conf
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --format documentation
2
+ --color
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
@@ -0,0 +1,19 @@
1
+ # Rails Config Loaders
2
+
3
+ ## Description
4
+
5
+ The gem is a simple solution if you want health check apis of latency and database.
6
+
7
+ ## Installation
8
+
9
+ 1. Put this into your Gemfile
10
+
11
+ ``` ruby
12
+ gem 'rails-health-check'
13
+ ```
14
+
15
+ and run ``bundle install``.
16
+
17
+ 2. Start your rails application.
18
+
19
+ 3. visit `/health/latency` and `/health/db`
@@ -0,0 +1,6 @@
1
+ require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task default: :spec
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 1.0.0
@@ -0,0 +1,3 @@
1
+ require 'rails'
2
+ require 'rails-health-check/middleware'
3
+ require 'rails-health-check/railtie'
@@ -0,0 +1,61 @@
1
+ module RailsHealthCheck
2
+ class Middleware
3
+
4
+ def initialize(app, options={})
5
+ @app = app
6
+ end
7
+
8
+ def call(env)
9
+ if env['REQUEST_METHOD'] == 'GET' && health_path?(env['PATH_INFO'])
10
+ if health_latency_path?(env['PATH_INFO'])
11
+ health_latency_response
12
+ elsif health_db_path?(env['PATH_INFO'])
13
+ health_db_response
14
+ end
15
+ else
16
+ @app.call(env)
17
+ end
18
+ end
19
+
20
+ protected
21
+
22
+ def health_path?(request_path)
23
+ health_latency_path?(request_path) || health_db_path?(request_path)
24
+ end
25
+
26
+ def health_latency_path?(request_path)
27
+ request_path == '/health/latency'
28
+ end
29
+
30
+ def health_db_path?(request_path)
31
+ request_path == '/health/db'
32
+ end
33
+
34
+ def health_latency_response
35
+ # [status, headers, body]
36
+ [200, { 'Content-Type' => 'application/json' }, [{ msg: 'ok' }.to_json]]
37
+ end
38
+
39
+ def health_db_response
40
+ begin
41
+ validate_migration
42
+
43
+ status = 200
44
+ msg = 'ok'
45
+ rescue => e
46
+ status = 500
47
+ msg = e.message
48
+ end
49
+
50
+ # [status, headers, body]
51
+ [status, { 'Content-Type' => 'application/json' }, [{ msg: msg }.to_json]]
52
+ end
53
+
54
+ def validate_migration
55
+ # Check connection to the DB and needs migration or not
56
+ if ActiveRecord::Migrator.needs_migration?
57
+ raise 'Schema is not latest!'
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,7 @@
1
+ module RailsHealthCheck
2
+ class Railtie < Rails::Railtie
3
+ initializer 'rails-health-check' do |app|
4
+ app.middleware.insert_after Rails::Rack::Logger, RailsHealthCheck::Middleware
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,20 @@
1
+ version = File.read(File.expand_path('../VERSION', __FILE__)).strip
2
+
3
+ Gem::Specification.new do |s|
4
+ s.platform = Gem::Platform::RUBY
5
+ s.name = 'rails-health-check'
6
+ s.version = version
7
+ s.summary = 'Health check for Rails'
8
+ s.description = 'It is a health check tool for Rails.'
9
+ s.licenses = ['Nonstandard']
10
+ s.authors = ['ChouAndy']
11
+ s.email = ['chouandy625@gmail.com']
12
+ s.homepage = 'https://github.com/chouandy/rails-health-check'
13
+
14
+ s.files = `git ls-files`.split("\n")
15
+ s.require_paths = ['lib']
16
+
17
+ s.required_ruby_version = '>= 1.9.3'
18
+
19
+ s.add_dependency 'rails', '>= 4.2'
20
+ end
metadata ADDED
@@ -0,0 +1,68 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rails-health-check
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - ChouAndy
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-07-01 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '4.2'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '4.2'
27
+ description: It is a health check tool for Rails.
28
+ email:
29
+ - chouandy625@gmail.com
30
+ executables: []
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - ".gitignore"
35
+ - ".rspec"
36
+ - Gemfile
37
+ - README.md
38
+ - Rakefile
39
+ - VERSION
40
+ - lib/rails-health-check.rb
41
+ - lib/rails-health-check/middleware.rb
42
+ - lib/rails-health-check/railtie.rb
43
+ - rails-health-check.gemspec
44
+ homepage: https://github.com/chouandy/rails-health-check
45
+ licenses:
46
+ - Nonstandard
47
+ metadata: {}
48
+ post_install_message:
49
+ rdoc_options: []
50
+ require_paths:
51
+ - lib
52
+ required_ruby_version: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ version: 1.9.3
57
+ required_rubygems_version: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ requirements: []
63
+ rubyforge_project:
64
+ rubygems_version: 2.6.8
65
+ signing_key:
66
+ specification_version: 4
67
+ summary: Health check for Rails
68
+ test_files: []