54

foreman を実行すると、次のようになります。

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

どうすれば修正できますか?

4

6 に答える 6

51

この問題は、次の 2 つの方法で解決できました。

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

    プログラムからの出力が表示されない場合は、stdout をバッファリングしている可能性があります。Ruby はデフォルトで stdout をバッファリングします。この動作を無効にするには、プログラムのできるだけ早い段階で次のコードを追加します。

    # ruby
    $stdout.sync = true
    
  2. heroku toolbelt パッケージから foremanをインストールする

しかし、何が起こっているのか、上記の 2 つの方法で問題が解決した理由はまだわかりません…</p>

于 2012-01-15T22:10:49.847 に答える
21

私の解決策は$stdout.sync = true、config/environments/development.rb の先頭に配置することでした。

次に、開発環境をロードするすべてのもの (シンを含む) は stdout をバッファリングしません。

于 2012-06-21T16:36:16.783 に答える
16

「Foreman は、起動したプロセスによって 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.log を使用すると機能します。

于 2012-01-08T23:20:27.377 に答える
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

そして、それはもはや私に問題を与えませんでした。

于 2012-01-06T23:37:54.243 に答える
4

Foreman を使用して Ryby プロジェクトではなく Python プロジェクトを実行していて、同じ問題が発生している場合は、いくつかの解決策があります。Procfile を使用して Python CLI を直接呼び出す場合は、'-u' オプションを使用して stdout バッファリングを回避できます。

python -u script.py

ガンコーン、フラスコ、ボトル、イブなどの呼び出しなど、Procfile を使用して WSGI サーバーを管理している場合は、「.env」ファイルを Python プロジェクトのルートに追加できます。これには、次のものが含まれます。

PYTHONUNBUFFERED=True
于 2014-01-25T16:58:59.560 に答える
4

同じ問題があります (ruby 1.9.3-p0、rails 3.2rc2、OSX 10.7)。

この行を Gemfile に追加して、 foreman-0.27.0 を使用して問題を解決しました。

gem 'foreman', '0.27.0'
于 2012-01-06T05:25:04.780 に答える