Rails + foreman + worker挂起服务器

时间:2012-07-06 09:53:58

标签: ruby-on-rails-3 delayed-job foreman

在我的本地机器上,我正在尝试启动我的rails应用程序并使用Foreman推迟了工作者。我的Procfile如下所示:

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

当我启动工头时,只会执行前两个Web请求。第三个请求服务器挂起。第一个请求在控制台输出,第二个请求不输出。

如果我在Procfile中遗漏了工作人员,那么服务器运行正常并且正在将所有内容输出到控制台。此外,当我启动rails服务器和没有Foreman的工作人员时,一切正常。

所以看起来Foreman存在问题。我猜这是Foreman在第一次请求后没有向控制台输出任何内容的问题,因此缓冲区不会被刷新。我搜索了其他帖子,结果在我的development.rb中添加了STDOUT.sync = true但没有任何成功。

有人有线索吗?谢谢!

4 个答案:

答案 0 :(得分:3)

更新: 在这里进行跟踪和解决:

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

TL; DR:安装gem,不要使用foreman.pkg


我面临同样的问题。

这是我在stackoverflow上询问的question的链接。 @smek,如果你找到答案,请回复!

答案 1 :(得分:2)

我在本地开发环境中尝试实施和测试DJ + Foreman时遇到了类似的问题。我打算部署到Heroku并使用following文章作为指南。如果您还要部署到Heroku,我建议安装Heroku Toolbelt,其中包括Foreman。在我的情况下,我已经安装了Heroku Toolbelt,所以我只是重新安装它。

答案 2 :(得分:0)

大多数时候有人在代码中留下了调试器/ pry语句,或者在某个地方放置了断点。

如果你找不到任何东西,你可以使用像lsof或gdb这样的系统工具来找出你的ruby进程目前正在做什么。这可能有助于找到问题。

答案 3 :(得分:0)

我刚刚开始使用Foreman大约一个小时前,我在执行Foreman时遇到了一些问题,我的rake任务和rails server都挂了。当我从我的Gemfile中删除pry gem时,它起作用,但这是不可接受的,因为我在开发中使用pry。

然后我更新到工头版本0.49.0(大约10分钟前发布),问题得到解决。太糟糕了,一小时后我没有开始完成这个任务,因为那时我会得到0.49.0开始并且不得不乱了一个小时:)

您应该尝试升级Foreman并查看它是否能解决您的问题。