Foreman条件运行流程

时间:2015-05-06 07:23:24

标签: ruby-on-rails ruby foreman

我有一个带有这样的Procfile的工头应用程序

web: bundle exec rails s
custom_process: bundle exec rake custom:process
faking_custom_process: bundle exec rake custom:faking_process

我希望运行custom_processfaking custom_process取决于我的需求:

foreman start # run web & custom_process
FAKING_PROCESS # run web & faking_custom_process

是的,我知道像foreman start -c faking_custom_process=0一样跑步的能力,但这比我想象的要困难,对吗?

2 个答案:

答案 0 :(得分:1)

工头没有选择跳过一个过程。我想如果你想运行其他进程,你需要扩展你的开始调用以做一些不同的事情。否则你只是告诉它运行零faking_custom_process副本而不是其他任何东西:

foreman start -m web=1,custom_process=1,faking_custom_process=0

或伪造版本:

foreman start -m web=1,custom_process=0,faking_custom_process=1

你当然可以编写脚本,这样你就有两个运行这些不同版本的脚本。

另一种方法是使用环境中的变量来打开或关闭伪装(我不相信它更容易,但它是另一种选择):

web: bundle exec rails d
custom_process: PROCESS=$FAKING"process" && bundle exec rake custom:$PROCESS

普通foreman start只会运行bundle exec rake custom:process

对于伪造等效物,你可以这样做:

export FAKING="faking_"

这意味着从foreman start开始,它会调用bundle exec rake custom:faking_process

您可以通过以下方式清除FAKING变量来恢复正常流程:

export FAKING=

您当然可以将其封装到shell脚本中。

答案 1 :(得分:0)

您可以使用.profile存储foreman start的默认选项:

concurrency: web=1,custom_process=1,faking_custom_process=0

或使用快捷方式:

concurrency: all=1,faking_custom_process=0

然后你覆盖这个默认选项以切换到假进程:

foreman start -c all=1,custom_process=0

请参阅:http://ddollar.github.io/foreman/#DEFAULT-OPTIONS

相关问题