class Rack::HaproxyStatus::Endpoint
Constants
- InvalidStatus
- VALID_STATES
Public Class Methods
new(path:, io: ::File, extra_checks: [])
click to toggle source
# File lib/rack/haproxy_status.rb, line 11 def initialize(path:, io: ::File, extra_checks: []) @path = path @io = io @extra_checks = extra_checks end
Public Instance Methods
call(env)
click to toggle source
# File lib/rack/haproxy_status.rb, line 17 def call(env) balancer_member = balancer_member? extra_checks_all_successful = extra_checks_all_successful? http_code = balancer_member && extra_checks_all_successful ? 200 : 503 status = extra_checks_all_successful ? 'ok' : 'error' [ http_code, {'Content-Type' => 'application/json'}, [JSON.generate(status: status, member: balancer_member?)] ] rescue InvalidStatus [500, {'Content-Type' => 'application/json'}, ['{"status": "unknown status"}']] end
Private Instance Methods
balancer_member?()
click to toggle source
# File lib/rack/haproxy_status.rb, line 34 def balancer_member? state = @io.read(@path).strip raise InvalidStatus, "Invalid state: #{state}" unless VALID_STATES.include?(state) state == "on" end
extra_checks_all_successful?()
click to toggle source
# File lib/rack/haproxy_status.rb, line 40 def extra_checks_all_successful? @extra_checks.map { |check| check.call() }.all? end