#!/usr/bin/env ruby require "racecar" require "racecar/cli" module Racecar class << self def start(argv) Cli.main(argv) rescue SignalException => e # We might receive SIGTERM before our signal handler is installed. if Signal.signame(e.signo) == "TERM" exit(0) else raise end rescue SystemExit raise rescue Exception => e $stderr.puts "=> Crashed: #{exception_with_causes(e)}\n#{e.backtrace.join("\n")}" Racecar.config.error_handler.call(e) exit(1) else exit(0) end private def exception_with_causes(e) result = +"#{e.class}: #{e}" if e.cause result << "\n" result << "--- Caused by: ---\n" result << exception_with_causes(e.cause) end result end end end # Start your engines! Racecar.start(ARGV)