class Utils::ProbeServer
def cmd(job)
def cmd(job) [ $0, *job ] end
def enqueue(job)
def enqueue(job) output_message "Job #{job.inspect} enqueued.".black.on_yellow @jobs.push job end
def initialize
def initialize @jobs = Queue.new Thread.new { work_loop } end
def output_message(msg)
def output_message(msg) STDOUT.puts msg STDOUT.flush end
def run_job(job)
def run_job(job) message = "Job #{job.inspect} about to run now:".black message = message.ask_and_send(:on_color, 166) || message.on_yellow output_message message fork do exec(*cmd(job)) end Process.wait message = "Job #{job.inspect} was just run" if $?.success? message << " successfully." message = message.black.on_green else message << " and failed with exit status #{$?.exitstatus}!" message = message.white.on_red.blink end output_message message end
def shutdown
def shutdown output_message "Server was shutdown down – HARD!".white.on_red.blink exit! 23 end
def work_loop
def work_loop loop do job = @jobs.shift run_job job end end