工头开发与生产(轨道)

时间:2013-01-13 21:46:31

标签: ruby-on-rails heroku foreman

生产中表现不同的“工头方式”是什么? 发展?那就是我们希望工头开始启动一堆 在开发中的东西,但在heroku生产中我们不需要它开始 (例如)solr。

3 个答案:

答案 0 :(得分:22)

我遵循惯例;

  • Procfile定义所有进程
  • .foreman设置特定的领班变量

发展:

  • .env为每个开发人员设置环境变量
  • .env.example设置开发默认值
  • foreman start启动所有流程

生产:

  • heroku config设置环境变量
  • heroku ps:scale打开或关闭生产所需的任何流程

这是一个项目的例子。

Procfile:

web:    bundle exec unicorn_rails -p $PORT -c ./config/unicorn.rb
worker: bundle exec rake jobs:work
search: bundle exec rake sunspot:solr:run

.env.example:

# default S3 bucket
S3_KEY=keykeykeykeykeykey
S3_SECRET=secretsecretsecret
S3_BUCKET=myapp-development

.ENV

# developer's private S3 bucket
S3_KEY=mememememememememe
S3_SECRET=mysecretmysecret
S3_BUCKET=myapp-development

.foreman:

# development port is 3000
port: 3000

答案 1 :(得分:3)

Foreman使用参数来使用不同的文件(-d)和参数来指定要运行的内容。它还支持.foreman文件,允许这些args成为默认值。有关详细信息,请参阅http://ddollar.github.com/foreman/

答案 2 :(得分:1)

之前我使用过特定于环境的Procfile,这非常简单且工作正常。

基本上你有Procfile.developmentProcfile.production等。每个人都可以自定义你想要开始的过程,然后通过foreman运行它们,如下所示:

foreman start -f Procfile.development

另一种方法是引用Procfile中的脚本,并在每个脚本中根据环境启动相应的过程。 The creator of Foreman does this并且an example from his Anvil project your reference