Skip to content

Instantly share code, notes, and snippets.

@amkisko
Created January 25, 2025 05:56
Show Gist options
  • Save amkisko/cea036b49aad44b6f007c73dce9dfb4d to your computer and use it in GitHub Desktop.
Save amkisko/cea036b49aad44b6f007c73dce9dfb4d to your computer and use it in GitHub Desktop.
Rails solid_queue alive server livenessProbe readinessProbe kubernetes helper
class SolidQueueAliveServer
def initialize(host: nil, port: nil, engine: nil, logger: nil)
@host = host || "0.0.0.0"
@port = port || 7433
@engine = engine || "puma"
@logger = logger || Rails.logger
end
def run!
require "rackup"
handler = Rackup::Handler.get(@engine)
Signal.trap("TERM") { handler.shutdown }
handler.run(self, Port: @port, Host: @host, AccessLog: [], Logger: @logger)
end
def alive?
true
end
def call(_env)
[
alive? ? 200 : 500,
{"Content-Type" => "application/json"},
[
{alive: alive?}.to_json
]
]
end
end
SolidQueue.on_start do
@server_pid = fork { SolidQueueAliveServer.new.run! }
end
SolidQueue.on_stop do
Process.kill("TERM", @server_pid) unless @server_pid.nil?
Process.wait(@server_pid) unless @server_pid.nil?
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment