2012-07-10 8 views
5

Tengo un Procfile simple que dice lo siguiente:a partir de varios trabajadores en Procfile (entorno de desarrollo vs Heroku)

web: bundle exec rails server thin -p $PORT 
worker: bundle exec rake jobs:work 

En Heroku, esto va a poner en marcha las tareas de los trabajadores N, donde N es lo que he escalado que sea .

En mi sistema de desarrollo,

$ foreman start 

sólo se pondrá en marcha una tarea trabajador. Si quiero lanzar tres trabajadores, necesito un Procfile que se parece a:

web: bundle exec rails server thin -p $PORT 
worker: bundle exec rake jobs:work 
worker: bundle exec rake jobs:work 
worker: bundle exec rake jobs:work 

Ésta es una pregunta un tanto pedante, pero si quiero que mi entorno de desarrollo para comportarse como mi entorno Heroku, ¿cuál es la mejor manera de poner en marcha N tareas de los trabajadores? ¿Es la forma aprobada de crear (por ejemplo) Procfile_local y usarlo a través del foreman -f Procfile_local?

Respuesta

14

Ah. ¿Quién hubiera adivinado que hay un man page for foreman en línea? ;)

foreman start --concurrency="web=0,worker=6" 

Tiene el truco muy bien. No es necesario tener un Procfile por separado.

+0

Excelente! Puse esto en mi archivo de configuración .foreman para no tener que especificar esto con cada comando: 'concurrency: web = 1, worker = 2 \ n port: 7500'. Gracias por el consejo fearless_fool. –

+0

o versión más corta: 'foreman start -c web = 1, worker = 6' –

3

Última capataz ha cambiado el nombre a --formation.

lo tanto, es:

foreman start --formation="web=1,worker=2" 

Source

Cuestiones relacionadas