【问题标题】:git ignore deletes my_database.yml file from Herokugit ignore 从 Heroku 中删除 my_database.yml 文件
【发布时间】:2016-02-08 00:48:39
【问题描述】:

我是一个菜鸟,使用 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 处理开发和实时数据库文件的概念?

谢谢, 蒂姆。

【问题讨论】:

    标签: git heroku


    【解决方案1】:

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

    每个 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 之类的东西。

    【讨论】:

    • 谢谢@Chris,我会继续阅读的。我知道我学习的下一步是使用“适当的”数据库,但还没有那么远。我想这是下一步。
    猜你喜欢
    • 2016-03-13
    • 2013-05-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-10
    • 1970-01-01
    • 1970-01-01
    • 2019-12-09
    • 2013-11-11
    相关资源
    最近更新 更多