Подтвердить что ты не робот

Мастер только показывает строку с "начатым 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 ...

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

4b9b3361

Ответ 1

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

  • От https://github.com/ddollar/foreman/wiki/Missing-Output:

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

    # ruby
    $stdout.sync = true
    
  • Установив мастера с помощью пакета инструментальных инструментов heroku

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

Ответ 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