我很好奇是否有人可以在不使用 S3 的情况下在 Heroku 上工作时获得回形针。我假设 Heroku 是一个只读系统,但必须有某种方法可以在那里保存图像。
5 回答
你不能写入 Heroku 的文件系统,所以不,没有办法以你想要的方式保存图像。您的选择是使用像 S3 这样的服务,或者将它们存储在数据库中。我推荐使用 S3,因为数据库没有针对文件存储进行优化。值得阅读Heroku 关于文件上传的文档。
您可以将图像保存到log
和tmp
目录。
然而,这是一个可怕的、可怕的想法。
如果你
git push heroku
,你的应用程序将被部署到一个新的测功机。新的测功机将没有图像,图像将永远消失。如果您有两个测功机,一个测功机保存图像,则下一个测功机将无法使用该图像。
因此,实际上,没有将图像保存到文件系统的好方法。
如果需要,您可以为 Paperclip 编写自己的适配器,将图像存储在数据库中。
但实际上,当您在 Heroku 上使用 Paperclip 时,您应该将图像存储在 S3 中,因为这是最简单的默认方式。
顺便说一句,这也是 SASS 需要 Heroku 上的插件,限制对磁盘的访问的原因。正如其他人所说,我在 Heroku 上的许多应用程序中使用 Paperclip,S3 放下手是要走的路。
这适用于像我这样没有信用卡但仍希望使其正常工作的人,因为您需要提供信用卡凭据才能使用 S3。Cloudinary Gem允许通过 Paperclip 管理的 Rails 模型将图像和文件资产存储在 Cloudinary 实例上。我只需要将 yaml 文件添加到我的配置目录并在我的模型中指定存储路径,如下所示。
has_attached_file :image,
:storage => :cloudinary,
:path => ':id/:style/:filename'
有关更多详细信息,请参阅上面的链接。
也许Amazon EBS可以与 Heroku 一起使用——还是它的级别太低了?