如何从 Heroku 应用程序中提取更新的文件?

Posted

技术标签:

【中文标题】如何从 Heroku 应用程序中提取更新的文件?【英文标题】:How to pull updated files from a Heroku application? 【发布时间】:2020-01-13 20:05:37 【问题描述】:

使用 Heroku 托管的新 Discord Bot,对文件进行了更改,我在更新代码时需要该文件,但我无法获取更新后的文件。

之前我曾尝试使用带有 Heroku 插件的 Git 使用 slug 命令和克隆命令来下载这些文件,但都返回无济于事。

我尝试的第一个命令是git clone https://git.heroku.com/APP_NAME.git,它在我使用 API 登录后返回了一个空存储库。

然后我尝试heroku slugs:download -a APP_NAME 成功并下载了存储库,但它是 Deployed 构建的初始形式并且不包含更新的文件。

我的机器人将统计信息写入用户,例如“金钱”和“日常”类型的东西,发送到 userData.json file。我在本地编辑机器人,将其推送到 GitHub,然后从 GitHub 部署到 Heroku。当我尝试下载 Heroku 的存储库时,我希望从机器人上线时更新userData.json,这样当我对机器人进行更新时,我不会用旧信息覆盖新信息,但是在使用克隆时命令我得到一个空的 repo,当使用 slugs:download 时,我得到了 Heroku 在我第一次部署构建时得到的 repo。

【问题讨论】:

【参考方案1】:

我的机器人将统计数据写入用户,例如“金钱”和“日常”类型的东西,写入 userData.json 文件

这不是 Heroku 的好策略,它有一个 ephemeral filesystem。每当您的 dyno 重新启动时,文件更改都会丢失,并且没有一种好的方法可以在 Heroku 上提交更改并将它们合并到您的存储库中。

数据通常不属于您的存储库。它是程序状态,应该允许从环境到环境进行更改。将数据保存在数据库中,而不是文件中。

Heroku Postgres 是一个相对低摩擦的选项,有一个免费层开始。如果你不喜欢 PostgreSQL,你可以选择another data store。

【讨论】:

以上是关于如何从 Heroku 应用程序中提取更新的文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Heroku 访问远程 MySQL 数据库?

Kong 和 JWT - API 应如何从令牌中提取信息

如何删除heroku应用程序并切换到从相同文件创建的新应用程序?

运行 Heroku 应用程序未显示上传文件中的更改

如何从我的 Heroku 下载 csv 更改

如何指定要从私有 github 存储库中提取的 gem?