Мастер только показывает строку с "начатым 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 ...
Как это исправить?
Ответы
Ответ 1
Мне удалось решить эту проблему двумя разными способами:
Но я до сих пор не знаю, что происходит, и почему это два пути выше решить проблему...
Ответ 2
Моим решением было положить $stdout.sync = true
в начало config/environment/development.rb.
Тогда все, что загружает среду разработки (включая тонкую), не будет буферировать stdout.
Ответ 3
"Форман будет отображать на вывод терминала все, что записано в stdout процессами, которые запускаются". - ddollar См. мастера-проблемы # 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.log работает.
Ответ 4
У меня та же проблема (ruby 1.9.3-p0, rails 3.2rc2, OSX 10.7).
Устранена проблема с помощью мастера-0.27.0, добавив эту строку в мой Gemfile.
gem 'foreman', '0.27.0'
Ответ 5
У меня также была та же проблема, но с другим решением. (рубин 1.9.2p290, рельсы 3.1.0, ubuntu 10.04.3)
Я изменил строку в своем файле Procfile:
web: bundle exec thin start -p $PORT
в
web: bundle exec rails server thin -p $PORT
и это больше не давало мне проблемы.
Ответ 6
Если вы используете Foreman для запуска проекта Python, а не для проекта Ryby, и у вас такая же проблема, вот некоторые решения для вас. Если вы используете Procfile для непосредственного вызова CLI python, вы можете использовать опцию '-u', чтобы избежать буферизации stdout:
python -u script.py
Если вы используете Procfile для управления WSGI-сервером, например, вызывая gunicorn, флягу, бутылку, канун и т.д., вы можете добавить файл ".env" в корень вашего проекта python, содержащий следующие
PYTHONUNBUFFERED=True