class Cogent::Healthcheck::Check
Public Class Methods
new(app)
click to toggle source
# File lib/healthcheck/check.rb, line 7 def initialize(app) @app = app end
Public Instance Methods
call(env)
click to toggle source
# File lib/healthcheck/check.rb, line 11 def call(env) path_info = env['PATH_INFO'] if path_info == '/checks' response('200', checks(env).to_json, env) elsif path_info =~ /\/checks\// check_name = path_info.split('/').last check(check_name, env) else @app.call(env) end end
Private Instance Methods
check(name, env)
click to toggle source
# File lib/healthcheck/check.rb, line 24 def check(name, env) check = Cogent::Healthcheck.config.checks.find{|check| check.name == name} begin check.new.execute rescue => e response('500', {error: e.backtrace}.to_json, env) end response('200', '', env) end
checks(env)
click to toggle source
# File lib/healthcheck/check.rb, line 34 def checks(env) base_uri = [env['rack.url_scheme'], '://',env['HTTP_HOST'], env['REQUEST_PATH']].join checks = Cogent::Healthcheck.config.checks.map do |check| uri = [base_uri, '/', check.name].join { name: check.name, description: check.description, href: uri } end end
response(status_code, body, env)
click to toggle source
# File lib/healthcheck/check.rb, line 46 def response(status_code, body, env) content_type = 'application/json' if env['QUERY_STRING'] && env['QUERY_STRING'] =~ /callback/ query_string = env['QUERY_STRING'].gsub(/callback=/, '') callback = query_string.split('&')[0] body = "#{callback}(#{body})" content_type = 'application/javascript' end [status_code, {'Content-Type' => content_type}, [body]] end