Rails Active Storage 镜像上传到 Heroku Postgres 附加组件

Rails Active Storage image upload to Heroku Postgres Add-on

提问人:Christian Cooney 提问时间:10/1/2023 更新时间:10/1/2023 访问量:32

问:

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

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

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

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

主机: 数据库: 用户:
港口: 密码: URI: Heroku CLI:

我找不到有关如何设置它的任何信息,因此任何帮助将不胜感激。提前致谢。

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

Ruby-on-Rails 数据库 PostgreSQL Heroku Rails-ActiveStorage

评论

1赞 mechnicov 10/1/2023
guides.rubyonrails.org/active_storage_overview.html

答:

0赞 max 10/1/2023 #1

你在这里很困惑。

Heroku 文件系统是短暂的 - 这意味着任何对 测功机运行时的文件系统仅持续到测功机 关闭或重新启动。每个测功机都带有一个干净的副本 文件系统。

临时文件系统仅在使用将附件存储在本地文件系统中的默认服务时才影响 ActiveStorage。:local

数据库附加组件不是短暂的。在部署时擦除数据库会让他们的同事非常生气。

虽然可以将文件存储在数据库的 blob 中,但 ActiveStorage 不附带数据库存储服务,而 YMMV 不附带提供该服务的第三方 Gem。在数据库中存储文件也有一些非常明显的缺点,我不建议这样做。

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

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