55 votes

le contremaître montre uniquement la ligne avec «commencé wit pid #» et rien d'autre

Lorsque je suis contremaître, je reçois les informations suivantes:

  > foreman start
 16:47:56 web.1     | started with pid 27122
 

Seulement si je l'arrête (via ctrl-c), il me montre ce qui manque:

 ^CSIGINT received
16:49:26 system    | sending SIGTERM to all processes
16:49:26 web.1     | => Booting Thin
16:49:26 web.1     | => Rails 3.0.0 application starting in development on http://0.0.0.0:5000
16:49:26 web.1     | => Call with -d to detach
16:49:26 web.1     | => Ctrl-C to shutdown server
16:49:26 web.1     | >> Thin web server (v1.3.1 codename Triple Espresso)
16:49:26 web.1     | >> Maximum connections set to 1024
16:49:26 web.1     | >> Listening on 0.0.0.0:5000, CTRL+C to stop
16:49:26 web.1     | >> Stopping ...
16:49:26 web.1     | Exiting
16:49:26 web.1     | >> Stopping ...
 

Comment je le répare?

50voto

ijverig Points 815

J'ai été en mesure de résoudre ce problème en 2 façons différentes:

  1. À partir de https://github.com/ddollar/foreman/wiki/Missing-Output:

    Si vous n'êtes pas en voir la sortie de votre programme, il est probable une chance que c'est la mémoire tampon stdout. Ruby tampons de sortie standard par défaut. Pour désactiver ce comportement, ajoutez ce code dès que possible dans votre programme:

    # ruby
    $stdout.sync = true
    
  2. En installant contremaître via le heroku toolbelt paquet

Mais je ne sais toujours pas ce qui se passe, ni pourquoi cela 2 méthodes ci-dessus ont résolu la question...

21voto

Earle Clubb Points 281

Ma solution a été de placer $stdout.sync = true en haut de config / environnements / development.rb.

Alors tout ce qui charge l’environnement de développement (y compris thin) ne sera pas tamponné par stdout.

17voto

julionc Points 131

"Foreman affichera sur la sortie du terminal tout ce qui est écrit sur stdout par les processus qu'il lance." - ddollar Voir le numéro du contremaître n ° 57

BTW, vous pouvez utiliser tailf dans Procfile pour voir les journaux

 web: bundle exec rails server thin -p $PORT
log: tail -f log/development.log
 

Astuce: tailf n’existe pas sous OSX, l’utilisation de tail -f -n 40 log / development.log fonctionne.

5voto

Dan Points 41

J'ai aussi eu le même problème mais avec une solution différente. (ruby 1.9.2p290, rails 3.1.0, Ubuntu 10.04.3)

J'ai changé la ligne dans mon Procfile de:

 web: bundle exec thin start -p $PORT
 

à:

 web: bundle exec rails server thin -p $PORT
 

et cela ne m'a plus posé de problème.

4voto

Gerry Points 2710

J'ai le même problème (ruby 1.9.3-p0, rails 3.2rc2, OSX 10.7).

Résolu le problème en utilisant foreman-0.27.0 en ajoutant cette ligne à mon fichier Gemfile.

 gem 'foreman', '0.27.0'
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X