class Hanami::Events::CloudPubsub::HealthCheckServer
Simple server for health checks
Attributes
logger[R]
runner[R]
Public Class Methods
new(runner, logger)
click to toggle source
# File lib/hanami/events/cloud_pubsub/health_check_server.rb, line 10 def initialize(runner, logger) @runner = runner @logger = logger end
Public Instance Methods
run_in_background(on_shutdown: nil)
click to toggle source
# File lib/hanami/events/cloud_pubsub/health_check_server.rb, line 25 def run_in_background(on_shutdown: nil) prom = Concurrent::Promise.execute do start on_shutdown&.call(@server) end prom.catch { |err| logger.error(err) } end
shutdown()
click to toggle source
# File lib/hanami/events/cloud_pubsub/health_check_server.rb, line 20 def shutdown logger.info 'Shutting down healthcheck server' @server.shutdown end
start()
click to toggle source
# File lib/hanami/events/cloud_pubsub/health_check_server.rb, line 15 def start logger.info 'Starting healthcheck server on port 0.0.0.0:8081' start_server end
Private Instance Methods
health_endpoint(_env)
click to toggle source
# File lib/hanami/events/cloud_pubsub/health_check_server.rb, line 63 def health_endpoint(_env) headers = { 'Content-Type' => 'text/plain' } status = runner.healthy? ? 200 : 503 body = [runner.debug_info] [status, headers, body] end
rack_app()
click to toggle source
# File lib/hanami/events/cloud_pubsub/health_check_server.rb, line 52 def rack_app health_endpoint_app = method(:health_endpoint) Rack::Builder.new do |builder| builder.use Rack::Deflater builder.use Yabeda::Prometheus::Exporter if defined?(Yabeda::Prometheus::Exporter) builder.run health_endpoint_app end end
start_server()
click to toggle source
# File lib/hanami/events/cloud_pubsub/health_check_server.rb, line 38 def start_server require 'rack' Rack::Handler::WEBrick.run( rack_app, AccessLog: [], Host: '0.0.0.0', Port: 8081, Logger: WEBrick::Log.new('/dev/null') ) do |server| @server = server end end