web-dev-qa-db-fra.com

le contremaître ne montre que la ligne avec "commencé avec pid #" et rien d'autre

Quand je dirige, je reçois ce qui suit:

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

Seulement si je l'arrête (via Ctrl-C), cela 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?

53
ijverig

J'ai été en mesure de résoudre ce problème de 2 manières différentes:

  1. De - https://github.com/ddollar/foreman/wiki/Missing-Output :

    Si vous ne voyez aucune sortie de votre programme, il y a une chance probable qu'il s'agisse de tampon stdout. Ruby tampons stdout par défaut. Pour désactiver ce comportement, ajoutez ce code le plus tôt possible dans votre programme:

    # Ruby
    $stdout.sync = true
    
  2. En installant un contremaître via le fichier Heroku Toolbelt Package

Mais je ne sais toujours pas ce qui se passe ni pourquoi cette 2 façons de résoudre le problème ...

49
ijverig

Ma solution était de mettre $stdout.sync = true En haut de la configuration/environnements/développement.rb.

Ensuite, tout ce qui charge l'environnement de développement (mince inclinable) ne sera pas tampon stdout.

21
Earle Clubb

"Le contremaître s'affiche à la sortie terminale tout ce qui est écrit sur STDOUT par les processus qu'il lance." - Ddollar See Profemmes-Problèmes 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

Conseil: Tailf n'existe pas dans OSX, à l'aide de la queue -F -N 40 log/Development.Log fonctionne.

15
julionc

Si vous utilisez un contremaître pour exécuter un projet Python, plutôt qu'un projet RYBY, et vous avez le même problème, voici quelques solutions pour vous. Si vous utilisez un procfile pour invoquer directement la CLI python directement, vous pouvez utiliser l'option '-u' pour éviter la mise en mémoire tampon de stdout:

python -u script.py

Si vous utilisez un procfile pour gérer un serveur WSGI, tel que invoquer des coups de feu, un ballon, une bouteille, une veille, etc., vous pouvez ajouter un fichier ".env" à la racine de votre projet python, contenant le Suivant:

PYTHONUNBUFFERED=True
5
jsears

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 dans mon gemfile.

gem 'foreman', '0.27.0'
4
Gerry Shaw