2012-07-06 77 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,所以我只是重新安装了它。