加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – GIt部署配置文件Heroku

发布时间:2020-12-16 21:38:38 所属栏目:百科 来源:网络整理
导读:我使用Heroku来托管一个Rails应用程序,这意味着使用 Git部署到Heroku.由于Heroku上的“纯Git工作流程”,需要上传到服务器的任何东西都必须在我的本地框上进行相同的配置. 不过我需要有一些配置文件是不同的,具体取决于我是在本地设置还是部署在Heroku上.再次
我使用Heroku来托管一个Rails应用程序,这意味着使用 Git部署到Heroku.由于Heroku上的“纯Git工作流程”,需要上传到服务器的任何东西都必须在我的本地框上进行相同的配置.

不过我需要有一些配置文件是不同的,具体取决于我是在本地设置还是部署在Heroku上.再次,由于Heroku使用的部署方法,我无法使用.gitignore和一个模板(正如我已经看到的建议多次,并已在其他项目中使用).

我需要的是git以某种方式跟踪文件上的更改,但是有选择地告诉git在从特定的repo中拉出时不要覆盖某些文件 – 基本上只是单向进行某些更改.

这可以做吗我会感谢任何建议!

解决方法

您可以将config vars永久存储在每个heroku应用程序的本地设置上,以便它们不必在您的代码中!所以相同的代码可以在多个英雄网站上运行,但是具有不同的配置.它很简单,容易,优雅…

这是我们使用的方法. (我们使用它的同样的事情…我们有多个克隆的同样的应用程序在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!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读