不过我需要有一些配置文件是不同的,具体取决于我是在本地设置还是部署在Heroku上.再次,由于Heroku使用的部署方法,我无法使用.gitignore和一个模板(正如我已经看到的建议多次,并已在其他项目中使用).
我需要的是git以某种方式跟踪文件上的更改,但是有选择地告诉git在从特定的repo中拉出时不要覆盖某些文件 – 基本上只是单向进行某些更改.
这可以做吗我会感谢任何建议!
解决方法
这是我们使用的方法. (我们使用它的同样的事情…我们有多个克隆的同样的应用程序在Heroku,但我们只需要一个源在github,在我们的开发本地目录,我们做PUSH到ORIGIN(github),然后当我们有它是我们喜欢的方式,我们CD到prod本地目录,它进入SAME github存储库,我们只从GITHUB从该目录中拔出,从不推送(例如,所有推送到github来自我们的dev目录,prod目录只是其他heroku应用程序的分段区域.)
通过将不同的配置设置在不同的HEROKU站点上(如下所述),EXACT SAME CODE在两个英雄网站上工作.
所以我们的工作流程是:(关键是BOTH目录指向SAME github repo)
cd myDEVdir *....develop away....* git add . git commit -am "another day,another push" git push origin *(to our SINGLE github repo)* git push heroku *(test it out on heroku #1)* cd ../myPRODdir git pull *(grabs SAME code as used on other site *) git push heroku *(now the SAME code runs on Heroku #2)*
而已!
http://docs.heroku.com/config-vars
在您的本地命令行上,对于两个本地目录的每个目录,请执行以下操作:
$heroku config:add FIRST_CONFIGVAR=fooheroku1 Adding config vars: FIRST_CONFIGVAR => fooheroku1 $heroku config:add SECOND_CONFIGVAR=barheroku1 Adding config vars: SECOND_CONFIGVAR => barheroku1
查看你定义的那些:
$heroku config FIRST_CONFIGVAR => fooheroku1 SECOND_CONFIGVAR => barheroku1
然后cd到您的其他目录myPRODdir并做同样的事情,只设置相同的远程英雄变量fooheroku2和barheroku2.
那么在你的rails应用程序你简单的参考他们像这样:
a = ENV['FIRST_CONFIGVAR']
一个应用程序将读取“fooheroku1”,另一个应用程序将读取“fooheroku2”
最后,在您的LOCAL目录myDEVdir中,您以DEV模式运行,将相同的config命令放在config / environment / development.rb文件中,您的“dev”版本的config vars将被设置为任何应该的:
ENV['FIRST_CONFIGVAR'] = "foodev" ENV['SECOND_CONFIGVAR'] = "bardev"
容易,优雅.谢谢Heroku!