在Heroku上登台实例

我希望能够推送代码到dev.myapp.com进行testing,然后到www.myapp.com进行生产使用。 Heroku有可能吗?

你的Heroku接口本质上是一个Git分支。 Heroku gem通过他们的API做了一些工作,但是在你的Git仓库中,它只是一个新的远程分支。

 heroku create yourapp # production git br -D heroku # delete the default branch heroku create staging-yourapp # staging git br -D heroku # delete the default branch 

一旦你在Heroku上设置了多个应用程序,你应该能够像这样configuration你的Git仓库:

 git remote add staging git@heroku.com:staging-yourapp.git git push origin staging git remote add production git@heroku.com:yourapp.git git push origin production 

我通常在一个“工作”分支工作,并使用Gi​​thub作为我的主人。

假设情况是这样,你的部署工作stream可能看起来像这样:

 git co -b working # do some work # push to github: git co master git merge working git push # push to staging: git co staging git merge master git push origin staging # push to production git co production git merge master git push origin production 

这解释了你需要知道的一切,如果你像我这样的新手: http : //devcenter.heroku.com/articles/multiple-environments

原始问题的一个关键部分是将临时应用程序连接到主应用程序(www.myapp.com)的子域(dev.myapp.com)。 任何答案都没有解决这个问题。

步骤1:configuration您的应用程序的生产('myapp')和分期('staging-myapp')版本,如Luke Bayes

第2步:在您的域名pipe理系统(如GoDaddy)中:

 Create a CNAME record: dev.myapp.com that points to: proxy.heroku.com 

第3步:configurationHeroku将dev.myapp.com路由到staging-myapp:

 heroku domains:add dev.myapp.com --app staging-myapp 

在CNAMElogging有时间传播之后,您将能够在dev.myapp.com上运行登台应用程序。

你应该检查heroku_san

在heroku的环境上做了很好的工作。

现在事情比较容易。 这是你怎么做的…

为每个环境创build一个应用程序

 $ heroku create myapp --remote production $ heroku create myapp-staging --remote staging 

这将为每个应用程序创build命名的远程仓库,您可以在.git/config看到。

您现在可以使用–app–remote开关来定位特定的应用程序:

 $ heroku info --app myapp-staging $ heroku info --remote staging 

设置Rails环境

对于Rails应用程序,Heroku 默认为“生产”环境 。 如果您希望登台应用程序在暂存环境中运行,请在您的项目中创build环境 ,并在应用程序上设置相应的RAILS_ENVRAKE_ENV环境variables:

 $ heroku config:set RACK_ENV=staging RAILS_ENV=staging --remote staging 

configuration环境

如果你有其他的configurationvariables,你也需要把它们传递给每个环境。

 $ heroku config:set AWS_KEY=abc --remote staging $ heroku config:set AWD_SECRET=123 --remote staging ...etc 

这是一个巨大的痛苦,所以我只是使用我的snappconfiggem和运行

 $ rake heroku:config:load[myapp-staging] 

将我的项目的YAMLconfiguration文件加载到Heroku中。

部署

现在你只需要像这样推荐Heroku:

 $ git push staging master $ git push production master 

并像这样迁移:

 $ heroku run rake db:migrate --remote staging $ heroku run rake db:migrate --remote production 

(请参阅为应用程序pipe理多个环境| Heroku Dev Center获取更多信息和快捷方式。