Rails Active Storage 图像上传到 Heroku Postgres 插件

问题描述 投票:0回答:1

我创建了一个 Rails 博客应用程序,我可以在其中将图像上传到我的文章中。我已使用 Postgres 插件将该应用程序部署到 Heroku。当我上传图像时,它们显示正常,但如果我推送更改,或者重新启动 Heroku dyno,图像就会消失。

我知道 Heroku 的数据库是短暂的,但支持团队已确保该附加组件不是短暂的,并且如果代码设置正确,图像应保留在那里。

我相信我需要更改我的生产的“storage.yml”文件。我可以看到如何为 AWS、Google、Microsoft 等更改它,但我想知道是否有人可以帮助我为 Heroku 基于 AWS 的附加组件进行设置?

我从 Heroku 的 eu-west-1.compute.amazonaws.com AWS 数据库获得以下凭证详细信息:

主持人: 数据库:
用户: 港口: 密码: 网址: Heroku CLI:

我找不到任何有关如何设置它的信息,因此我们将不胜感激。预先感谢。

尝试设置正确的storage.yml文件信息

ruby-on-rails database postgresql heroku rails-activestorage
1个回答
0
投票

你在这里很困惑。

Heroku 文件系统是短暂的 - 这意味着对 dyno 运行时的文件系统仅持续到该 dyno 运行为止 关闭或重新启动。每个 dyno 靴子都有一个干净的副本 最近部署的文件系统。

如果您使用将附件存储在本地文件系统中的默认

:local
选项,则临时文件系统仅影响 ActiveStorage。

数据库附加组件不是短暂的。数据库在部署时被擦除会让他们的消费者非常生气。虽然 Heroku 实际上使用 AWS 作为数据库插件的后端,但这不是您必须配置甚至真正考虑的事情。您所要做的就是设置 Rails 以使用 Postgres 适配器,Heroku 提供 DATABASE_URL 环境变量所需的整个配置。

虽然您可以将文件存储在数据库中的 blob 中,但 ActiveStorage 不附带提供数据库存储和 YMMV 服务的第三方 gems。在数据库中存储文件也会带来一些相当显着的性能缺点,我不推荐它。

相反,我真的建议您注册像 AWS S3 这样的云存储服务,然后按照 Rails 指南中的说明进行集成

忘记 Heroku 的 AWS S3 插件,它可能不适用于最新版本的 Rails(请参阅指南顶部的警告),我有点不确定它实际提供的内容和 YAGNI。

© www.soinside.com 2019 - 2024. All rights reserved.