2012-07-06 24 views
6

En mi máquina local, intento iniciar la aplicación de mis rieles y retrasar la tarea de trabajo con Foreman. Mi archivo de proceso se ve así:Rails + foreman + worker cuelga el servidor

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

Cuando comienzo capataz solo se ejecutan las dos primeras solicitudes web. Con la tercera solicitud, el servidor se cuelga. La primera solicitud se envía a la consola, la segunda no.

Si dejo fuera al trabajador en mi Procfile, el servidor funciona perfectamente y está enviando todo a la consola. Además, cuando inicio el servidor y el empleado de Rails sin Foreman todo está funcionando bien.

Parece que hay un problema con Foreman. Supongo que es un problema con Foreman que no envía nada a la consola después de la primera solicitud y, por lo tanto, el búfer no se vacía. He buscado en otras publicaciones y, como resultado, agregué STDOUT.sync = verdadero a mi development.rb pero sin éxito.

¿Alguien tiene una pista? ¡Gracias!

Respuesta

3

ACTUALIZACIÓN: rastreado y resueltas aquí:

https://github.com/ddollar/foreman/issues/244

TL; DR: Instalar la gema, no utilice foreman.pkg


que estoy enfrentando el mismo problema .

Aquí hay un enlace al question que he pedido en stackoverflow. @smek, si encontraste una respuesta, ¡por favor responde!

+0

Todavía no, la actualización tampoco me solucionó el problema. Ahora tengo un Procfile para el desarrollo diferente donde he omitido al trabajador, que enciendo manualmente.Comienzo el capataz con '' 'foreman start -p 3000 -f Procfile.dev''' y el trabajador con' '' rake jobs: work'''. No es ideal, pero funciona para mí. – smek

+0

Eso también me funciona. Pero no estoy seguro de si Heroku lo admite. Estoy usando Heroku para implementar mi aplicación. ¿Ha investigado eso? – Vighnesh

+0

Sí, eso funciona bien. Simplemente tiene un archivo diferente para el desarrollo local. Heroku usa '' 'Procfile''' y para el desarrollo utilizo' '' Procfile.dev''' – smek

0

la mayoría de las veces alguien dejó una declaración de depurador/palanca en el código o pones un punto de interrupción en algún lugar.

si no puede encontrar nada, puede usar herramientas del sistema como lsof o gdb para averiguar qué está haciendo su proceso de ruby ​​en este momento. eso podría ayudar a encontrar el problema.

0

Acabo de empezar a usar Foreman hace aproximadamente una hora, y tenía algunos problemas con mis dos tareas de rake y con rails server colgando cuando era dirigido por Foreman. Cuando eliminé la gema pry de mi Gemfile funcionó, pero eso no era aceptable, ya que utilizo la palanca en el desarrollo.

Luego actualicé a la versión 0.49.0 del capataz (que se lanzó hace aproximadamente 10 minutos) y se solucionó el problema. Lástima que no comencé a trabajar en esta tarea una hora más tarde, porque entonces habría obtenido 0.49.0 para empezar y no tuve que perder el tiempo durante una hora :)

Debería intentar actualizar a Foreman y ver si arregla tu problema

+0

Disculpa mi respuesta tardía pero la actualización de Foreman no resuelve el problema. – smek

2

Tuve un problema similar al intentar implementar y probar DJ + Foreman en mi entorno de desarrollo local. Tenía la intención de implementar a Heroku y estaba usando el artículo following como guía. Si también se está implementando en Heroku, recomiendo instalar Heroku Toolbelt, que incluye a Foreman. En mi caso, ya tenía instalado Heroku Toolbelt, así que simplemente lo reinstalé.