在Procfile中启动多个worker(开发环境vs Heroku)

时间:2012-07-10 23:07:03

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

我有一个简单的Procfile:

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

在Heroku上,这将启动N个工作任务,其中N是我将其缩放的任何内容。

在我的开发系统上,

$ foreman start

只会启动一个工作任务。如果我想启动三个工作程序,我需要一个看起来像这样的Procfile:

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

这是一个有点迂腐的问题,但如果我希望我的开发环境像我的Heroku环境一样,那么启动N个工作任务的最佳方法是什么?是否已批准创建(例如)Procfile_local并通过foreman -f Procfile_local使用它?

2 个答案:

答案 0 :(得分:14)

阿。谁会猜到有一个在线man page for foreman? ;)

foreman start --concurrency="web=0,worker=6"

诀窍很好。无需单独的Procfile。

答案 1 :(得分:4)

最新Foreman已将该选项重命名为--formation

所以,它是:

foreman start --formation="web=1,worker=2"

Source