2012-07-06 109 views
6

在我的本地機器上,我試圖啓動我的rails應用程序並延遲了使用工頭的工作人員。我的Procfile如下所示:Rails +工頭+工人掛起服務器

web: bundle exec rails server -p $PORT 
worker: bundle exec rake jobs:work 

當我啓動工頭時,只有前兩個Web請求被執行。隨着第三個請求服務器掛起。第一個請求在控制檯中輸出,第二個請求不是。

如果我把我的Procfile中的工作人員排除在外,那麼服務器運行的很好,並將所有內容輸出到控制檯。另外,當我啓動沒有Foreman的rails服務器和worker時,一切工作都正常。

所以它看起來像工頭有一個問題。我猜這是Foreman在第一次請求後沒有向控制檯輸出任何東西,因此緩衝區沒有被刷新的問題。我搜索了其他帖子,結果在我的development.rb中添加了STDOUT.sync = true,但沒有取得任何成功。

有沒有人有線索?謝謝!

回答

3

UPDATE: 跟蹤和解決在這裏:

https://github.com/ddollar/foreman/issues/244

TL; DR:安裝寶石,不要用foreman.pkg


我面臨同樣的問題。

這是鏈接到我問到的stackoverflow的question。 @smek,如果你找到了答案,請回復!

+0

還沒有,更新並沒有解決我的問題。我現在有一個不同的Procfile用於開發,在那裏我省去了手動啓動的工人。我用'''工頭啓動-p 3000 -f Procfile.dev'''和工作人員用'''rake jobs:work'''啓動工頭。不理想,但它適用於我。 – smek 2012-08-08 08:35:07

+0

這也適用於我。但我不確定Heroku是否支持它。我正在使用Heroku來部署我的應用程序。你看過嗎? – Vighnesh 2012-08-08 17:55:12

+0

是的,這工作正常。你只是有一個不同的本地開發procfile。 Heroku使用'''Procfile'''和開發我使用'''Procfile.dev''' – smek 2012-08-09 08:29:28

0

大多數時候有人在代碼中留下了調試器/ pry語句,或者在某處放置了斷點。

如果你找不到任何東西,你可以使用像lsof或gdb這樣的系統工具來找出你的ruby進程正在做什麼。這可能有助於找出問題。

0

我剛開始使用福爾曼大約一個小時前,我有一些問題與我的耙子任務和rails server懸掛時,由福爾曼運行。當我從我的Gemfile中刪除了它的pry寶石時,它的工作原理,但這是不可接受的,因爲我在開發中使用pry。

然後我更新到領班版本0.49.0(約10分鐘前發佈),問題得到解決。太糟糕了,我沒有開始在一小時後這項任務的工作,因爲那麼我會得到0.49.0開始,而不必亂了一個小時:)

你應該嘗試升級工頭,看看是否它修復了你的問題。

+0

對不起,我遲到的答覆,但更新工頭並不能解決問題。 – smek 2012-08-08 08:32:52

2

當我嘗試在我的本地開發環境中實現和測試DJ + Foreman時,我遇到了類似的問題。我打算部署到Heroku,並使用following文章作爲指南。如果您也在部署到Heroku,我推薦安裝Heroku Toolbelt,其中包括Foreman。在我的情況下,我已經安裝了Heroku Toolbelt,所以我只是重新安裝了它。