Форман показывает только строку с " started wit pid #" и ничего больше


когда я бегу бригадир я получаю следующее:

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

только если я остановлю его (через ctrl-c) он показывает мне, что отсутствует:

^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 ...

Как это исправить?

6 51

6 ответов:

я смог решить эту проблему двумя различными способами:

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

    Если вы не видите никакого выхода из вашей программы, есть вероятность шанс, что это буферизация stdout. Ruby буферы stdout по умолчанию. К отключить данную функцию, добавьте этот код как можно раньше программа:

    # ruby
    $stdout.sync = true
    
  2. установка Форман через heroku toolbelt package

но я до сих пор не знаю, что происходит, ни почему это 2 выше способов решить проблему...

мое решение было поставить $stdout.sync = true в верхней части файла config/сред/развития.рубидий.

тогда все, что загружает среду разработки (включая тонкий), не будет буферизовать stdout.

" Форман выведет на вывод терминала все, что записано в stdout процессами, которые он запускает."- доллару вижу бригадир-выпуски#57

кстати, вы можете использовать tailf в Procfile, чтобы увидеть журналы

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

Совет: tailf не существует в OSX, используя tail-f-n 40 log/development.лог работает.

У меня та же проблема (ruby 1.9.3-p0, rails 3.2rc2, OSX 10.7).

решил проблему с помощью foreman-0.27.0, добавив эту строку в мой Gemfile.

gem 'foreman', '0.27.0'

у меня тоже была такая же проблема, но с другим решением. (ruby 1.9. 2p290, rails 3.1.0, ubuntu 10.04.3)

Я изменил строку в моем Procfile от:

web: bundle exec thin start -p $PORT

to:

web: bundle exec rails server thin -p $PORT

и это больше не давало мне проблемы.

Если вы используете Foreman для запуска проекта Python, а не проекта Ryby, и у вас такая же проблема, вот некоторые решения для вас. Если вы используете Procfile для прямого вызова интерфейса командной строки python, то вы можете использовать опцию '-u', чтобы избежать буферизации stdout:

python -u script.py

Если вы используете Procfile для управления сервером WSGI, например, вызывая gunicorn, flask, bottle, eve и т. д., то вы можете добавить".env " файл в корень вашего проекта python, содержащий следующее:

PYTHONUNBUFFERED=True