git ignore从Heroku中删除my_database.yml文件

时间:2016-02-07 16:20:50

标签: git heroku

我是一个菜鸟,使用YAML文件存储Heroku上基本Sinatra应用程序的实际数据库条目(不是配置文件)。

我发现'git push heroku'将我的本地测试数据库文件'my_database.yml'推送到实时版本并覆盖了实时版本。

因此我尝试将my_database.yml添加到我的gitignore文件和'git rm --cached my_database.yml'。我希望这会忽略我的本地my_database.yml文件,只需将其他所有内容推送到Heroku,将实时数据库保留在Heroku上。实际发生的是实时数据库被删除。

我应该如何防止实时数据库被删除,或者我是否遗漏了一些如何使用git和Heroku使用dev和live数据库文件的概念?

谢谢, 添

1 个答案:

答案 0 :(得分:1)

Heroku的filesystem is ephemeral,因此将其用于长期文件存储并不是一个好主意:

  

每个dyno都有自己的短暂文件系统,并带有最近部署代码的全新副本。在dyno的生命周期中,其运行进程可以将文件系统用作临时暂存器,但是任何其他dyno中的进程都不会看到所写的文件,并且在dyno停止或重新启动时,所写的任何文件都将被丢弃。例如,每次因应用程序部署而更换dyno时都会发生这种情况,并且大约每天一次作为正常dyno管理的一部分。

存储未版本控制文件的建议最佳做法是use something like Amazon S3

  

AWS Simple Storage Service,例如S3,是“高度耐用和可用的商店”,可用于可靠地存储应用程序内容,如媒体文件,静态资产和用户上传。它允许您卸载整个存储基础架构,并提供比仅在文件系统上存储文件更好的可伸缩性,可靠性和速度。

     

AWS S3或类似的存储服务在构建规模应用程序时非常重要,是Heroku ephemeral filesystem的完美补充。

在这种情况下,我建议您迁移您的YAML"数据库"将文件发送到像PostgreSQL这样的真实数据库。 Heroku提供了自己的PostgreSQL service,或者您可以使用类似Amazon RDS的内容。