Heroku 上的回形针?
我很好奇是否有人可以在不使用 S3 的情况下在 Heroku 上工作。我假设 Heroku 是一个只读系统,但必须有某种方法可以在那里保存图像。
I was curious if anyone could get paperclipped working on Heroku without using S3. I'm assuming Heroku is a read-only system, but there must be some way to save images there.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
您无法写入 Heroku 的文件系统,因此无法按照您想要的方式保存图像。您的选择是使用 S3 等服务,或将它们存储在数据库中。我建议使用 S3,因为数据库未针对文件存储进行优化。值得一读 Heroku 有关文件上传的文档。
You can't write to Heroku's file system, so no, there is no way to save images the way you want. Your options are using a service like S3, or storing them in the database. I recommend using S3, because databases are not optimized for file storage. It's worth reading Heroku's documentation on file uploads.
您可以将图像保存到
log
和tmp
目录中。然而,这是一个非常非常可怕的想法。
如果您
git push heroku
,您的应用程序将部署到新的dyno。新的 dyno 将没有图像,并且图像将永远消失。如果您有两个测功机,其中一个测功机保存图像,则该图像将无法用于下一个测功机。
因此,实际上,没有什么好的方法可以将图像保存到文件系统。
如果需要,您可以为 Paperclip 编写自己的适配器,将图像存储在数据库中。
但实际上,当您在 Heroku 上使用 Paperclip 时,您应该将图像存储在 S3 中,因为这是简单的默认方法。
You may save images to the
log
andtmp
directories.However, that's a horrible, horrible idea.
If you
git push heroku
, your application will be deployed to a new dyno. The new dyno will not have the images, and the images will be forever gone.If you have two dynos, and one dyno saves the image, the image will not be available to the next dyno.
So, effectively, there is no good way to save images to the filesystem.
If you want, you can write your own an adapter for Paperclip that will store images in the database.
But really, you should store images in S3 when you use Paperclip on Heroku, because it's the easy default way to do it.
顺便说一句,这也是 SASS 需要 Heroku 上的插件的原因,限制对磁盘的访问。我在 Heroku 上的许多应用程序中使用 Paperclip,正如其他人所说,S3 无疑是最佳选择。
As an aside, this is also the same reason why SASS requires a plugin on Heroku, limited access to disk. I use Paperclip in a number of apps on Heroku, as others have said, S3 hands down is the way to go.
这适用于像我这样没有信用卡但仍希望使其正常工作的人,因为您需要提供信用卡凭据才能使用 S3。 Cloudinary Gem 此处允许通过 Paperclip 管理的 Rails 模型在 Cloudinary 实例上存储图像和文件资源。我只需将 yaml 文件添加到我的配置目录中,并在模型中指定存储路径,如下所示。
请参阅上面的链接了解更多详细信息。
This is for someone like me who doesn't own a credit card and still wants to get this to work as you need to provide credit card credentials to use S3. Cloudinary Gem here allows Rails models managed via Paperclip to store image and file assets on a Cloudinary instance. I only had to add the yaml file to my config directory and specify the storage, path in my model as follows.
Refer the above link for more details.
也许 Amazon EBS 可以与 Heroku 一起使用 - 或者它的级别是否太低?
Maybe Amazon EBS can be used with Heroku -- or is it too low level?