def start
read_options
argv = [ "mongrel_rails" ]
argv << "start"
argv << "-d"
argv << "-e #{@options['environment']}" if @options['environment']
argv << "-a #{@options['address']}" if @options['address']
argv << "-c #{@options['cwd']}" if @options['cwd']
argv << "-o #{@options['timeout']}" if @options['timeout']
argv << "-t #{@options['throttle']}" if @options['throttle']
argv << "-m #{@options['mime_map']}" if @options['mime_map']
argv << "-r #{@options['docroot']}" if @options['docroot']
argv << "-n #{@options['num_procs']}" if @options['num_procs']
argv << "-B" if @options['debug']
argv << "-S #{@options['config_script']}" if @options['config_script']
argv << "--user #{@options['user']}" if @options['user']
argv << "--group #{@options['group']}" if @options['group']
argv << "--prefix #{@options['prefix']}" if @options['prefix']
cmd = argv.join " "
@ports.each do |port|
if @clean && pid_file_exists?(port) && !check_process(port)
pid_file = port_pid_file(port)
log "missing process: removing #{pid_file}"
chdir_cwd do
File.unlink(pid_file)
end
end
if pid_file_exists?(port) && check_process(port)
log "already started port #{port}"
next
end
exec_cmd = cmd + " -p #{port} -P #{port_pid_file(port)}"
exec_cmd += " -l #{port_log_file(port)}"
log "starting port #{port}"
log_verbose exec_cmd
output = `#{exec_cmd}`
log_error output unless $?.success?
end
end