在我的本地机器上,我试图启动我的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,但没有取得任何成功。
有没有人有线索?谢谢!
还没有,更新并没有解决我的问题。我现在有一个不同的Procfile用于开发,在那里我省去了手动启动的工人。我用'''工头启动-p 3000 -f Procfile.dev'''和工作人员用'''rake jobs:work'''启动工头。不理想,但它适用于我。 – smek 2012-08-08 08:35:07
这也适用于我。但我不确定Heroku是否支持它。我正在使用Heroku来部署我的应用程序。你看过吗? – Vighnesh 2012-08-08 17:55:12
是的,这工作正常。你只是有一个不同的本地开发procfile。 Heroku使用'''Procfile'''和开发我使用'''Procfile.dev''' – smek 2012-08-09 08:29:28