Class: MicroCommon::MetaMiddleware
- Inherits:
-
Object
- Object
- MicroCommon::MetaMiddleware
- Defined in:
- lib/micro_common/meta_middleware.rb
Instance Method Summary collapse
- #about ⇒ Object
- #call(env) ⇒ Object
- #check_database ⇒ Object
-
#initialize(app) ⇒ MetaMiddleware
constructor
A new instance of MetaMiddleware.
- #ping ⇒ Object
- #run_checks ⇒ Object
- #status ⇒ Object
Constructor Details
#initialize(app) ⇒ MetaMiddleware
Returns a new instance of MetaMiddleware.
3 4 5 |
# File 'lib/micro_common/meta_middleware.rb', line 3 def initialize(app) @app = app end |
Instance Method Details
#about ⇒ Object
21 22 23 24 |
# File 'lib/micro_common/meta_middleware.rb', line 21 def about response = JSON.pretty_generate(YAML.safe_load(File.read(Rails.root.join('config', 'about.yaml')))) [200, { 'Content-Type' => 'application/json' }, [response]] end |
#call(env) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 |
# File 'lib/micro_common/meta_middleware.rb', line 7 def call(env) uri = env['PATH_INFO'] if uri == '/meta/about' about elsif uri == '/meta/ping' ping elsif uri == '/meta/status' status else @app.call(env) end end |
#check_database ⇒ Object
42 43 44 45 46 47 |
# File 'lib/micro_common/meta_middleware.rb', line 42 def check_database ActiveRecord::Base.connection.execute('SELECT 1') true rescue PG::Error, PG::ConnectionBad, ActiveRecord::NoDatabaseError false end |
#ping ⇒ Object
26 27 28 |
# File 'lib/micro_common/meta_middleware.rb', line 26 def ping [200, {}, ['PONG']] end |
#run_checks ⇒ Object
36 37 38 39 40 |
# File 'lib/micro_common/meta_middleware.rb', line 36 def run_checks { database: check_database } end |
#status ⇒ Object
30 31 32 33 34 |
# File 'lib/micro_common/meta_middleware.rb', line 30 def status checks = run_checks status = checks.all? { |_, v| v } ? 200 : 503 [status, { 'Content-Type' => 'application/json' }, [checks.to_json]] end |