2012-03-19 14 views
8

Después de tratar de iniciar el capataz, me sale este error (tenga en cuenta que parece funcionar en heroku, así que supongo que este es un problema estrictamente local) :error de capataz de inicio (server.rb: 33, falta un argumento ...)

hrn039:textthechange jon$ foreman start 
02:20:00 web.1  | started with pid 7363 
02:20:01 web.1  | /Users/jon/.rvm/gems/ruby-1.9.3-p0/gems/railties-3.2.1/lib/rails/commands/server.rb:33:in `parse!': missing argument: -e (OptionParser::MissingArgument) 
02:20:01 web.1  | from /Users/jon/.rvm/gems/ruby-1.9.3-p0/gems/rack-1.4.1/lib/rack/server.rb:280:in `parse_options' 
02:20:01 web.1  | from /Users/jon/.rvm/gems/ruby-1.9.3-p0/gems/rack-1.4.1/lib/rack/server.rb:180:in `options' 
02:20:01 web.1  | from /Users/jon/.rvm/gems/ruby-1.9.3-p0/gems/railties-3.2.1/lib/rails/commands/server.rb:54:in `set_environment' 
02:20:01 web.1  | from /Users/jon/.rvm/gems/ruby-1.9.3-p0/gems/railties-3.2.1/lib/rails/commands/server.rb:42:in `initialize' 
02:20:01 web.1  | from /Users/jon/.rvm/gems/ruby-1.9.3-p0/gems/railties-3.2.1/lib/rails/commands.rb:50:in `new' 
02:20:01 web.1  | from /Users/jon/.rvm/gems/ruby-1.9.3-p0/gems/railties-3.2.1/lib/rails/commands.rb:50:in `<top (required)>' 
02:20:01 web.1  | from script/rails:6:in `require' 
02:20:01 web.1  | from script/rails:6:in `<main>' 
02:20:01 web.1  | process terminated 
02:20:01 system | sending SIGTERM to all processes 

El Procfile sólo tiene una línea como specified by heroku

web: bundle exec rails server thin -p $PORT -e $RACK_ENV 

Y mi Gemfile tiene

gem 'thin' 

Google no está siendo muy útil con este error.

Gracias!

+3

¿Tiene un archivo '.env' que especifica' $ RACK_ENV' en su proyecto? – nmott

+1

¿Tienes un RAKC_ENV definido en tu aplicación heroku? 'heroku config' – shingara

Respuesta

0

Tuve el mismo problema con rails v3.2 en Ubuntu 10.04. he conseguido correr delgada realizando los siguientes pasos:

  1. Cambie su Procfile de la siguiente manera:

    web: carriles exec paquete de servidor -p PUERTO delgada $ -e desarrollo

  2. Agregar $stdout.sync = true en la parte superior de su archivo config.ru, para dirigir la salida del servidor a su terminal (de lo contrario no obtendrá salida en su terminal)

¡Dime si funciona!

+1

Si tienes tu Procfile con' -e development', entonces no va a funcionar correctamente en Heroku, donde '-e production' se debe usar. Necesita usar '-e $ RACK_ENV' y especificar' RACK_ENV = development' en un archivo '.env' en su directorio de proyecto. – nmott

0

Acabo de encontrarme con este mismo problema. Si cambia su Procfile a solo

web: bundle exec rails server thin -p $PORT 

debería funcionar. Nota, este utiliza el puerto por defecto delgada de 5000 en lugar de 3000 (lo que significa que tendrá que ir a http://localhost:5000 para ver su aplicación.

Tras ser sometido a

web: bundle exec rails server thin 

en su Procfile utilizará el puerto 3000, pero esto va a causar errores en Heroku

21

no se trata de la ejecución de Heroku -. ver que la pregunta original sobre trata de ejecutar con Capataz -. que es ejecución local

puede reproducir el error mediante la ejecución del fol bramido:

servidor de rieles -e delgada

Eso es lo que efectivamente se está ejecutando capataz, dada su Procfile:

web: carriles exec paquete de servidor -p delgada $ PORT $ -e RACK_ENV

Así que voy a adivinar que no está pasando una discusión a -e. es decir. no ha definido RACK_ENV localmente.

Lo que puede hacer es crear un archivo .env en su directorio local, algo así como

RACK_ENV = desarrollo

PORT = 3000

capataz captará automáticamente el local de .env archive y establezca el entorno de forma adecuada, antes de crear el proceso en función de su declaración de tipo de proceso.

+2

Nota: Si está utilizando capataz en producción, entonces no desea enviar el archivo .env a su depósito de código. En ese caso, sugiero agregar .env a su archivo .gitignore (suponiendo que esté usando git para el control de la versión). –

Cuestiones relacionadas