【发布时间】:2011-02-23 20:19:35
【问题描述】:
我很好奇是否有人可以在不使用 S3 的情况下在 Heroku 上工作时获得回形针。我假设 Heroku 是一个只读系统,但必须有某种方法可以在那里保存图像。
【问题讨论】:
-
如果只是图片,您可以将链接存储在数据库中,并热链接到 flickr
标签: ruby-on-rails heroku paperclip radiant
我很好奇是否有人可以在不使用 S3 的情况下在 Heroku 上工作时获得回形针。我假设 Heroku 是一个只读系统,但必须有某种方法可以在那里保存图像。
【问题讨论】:
标签: ruby-on-rails heroku paperclip radiant
你不能写入 Heroku 的文件系统,所以不,没有办法以你想要的方式保存图像。您的选择是使用像 S3 这样的服务,或者将它们存储在数据库中。我推荐使用 S3,因为数据库没有针对文件存储进行优化。值得一读Heroku's documentation on file uploads。
【讨论】:
您可以将图像保存到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 一起使用——还是它的级别太低了?
【讨论】: