def run
begin
parse_options
rescue UnsupportedOption
exit 1
end
if dir = @options[:directory]
Dir.chdir dir
end
set_rack_environment
if clustered?
@events = PidEvents.new STDOUT, STDERR
@options[:logger] = @events
@runner = Cluster.new(self)
else
@runner = Single.new(self)
end
setup_signals
@status = :run
@runner.run
case @status
when :halt
log "* Stopping immediately!"
when :run, :stop
graceful_stop
when :restart
log "* Restarting..."
@runner.before_restart
restart!
when :exit
end
ensure
delete_pidfile
end