在生产环境中,通过"heroku rails console"从S3添加图片的Carrierwave方式

5

我有一个简单的应用程序,它使用carrierwave在博客数据库中保存图片(包括标题,正文和图片),我的凭证运行良好。

我在s3帐户中上传了一张图片,其URL如下:

/s3.amazonaws.com/Buket_name/..path../thumb_smile.png

我该如何使用heroku rails控制台从图像更新数据库。这似乎行不通:

b = Blog.new
b.title = "a blog"
b.body = "some text"
b.image =  File.new("s3.amazonaws.com/Buket_name/..path../thumb_smile.png","a")
or
b.image =  File.open("s3.amazonaws.com/Buket_name/..path../thumb_smile.png","r")

Errno::ENOENT: No such file or directory - 
s3.amazonaws.com/Buket_name/..path../thumb_smile.png
1个回答

9
使用CarrierWave的remote_{name}_url=属性是最简单的解决方案。
b = Blog.new
b.title = "a blog"
b.body = "some text"
b.remote_image_url = 'http://s3.amazonaws.com/Buket_name/..path../thumb_smile.png'
b.save

这个功能是特定于CarrierWave的,因此如果您想使用另一个库进行类似操作,请使用标准库中的open-uri

require 'open-uri'
image = open('http://s3.amazonaws.com/Buket_name/..path../thumb_smile.png')

现在,图像是一个可以在您的Ruby脚本中像文件一样使用的Tempfile
require 'open-uri'
image = open('http://s3.amazonaws.com/Buket_name/..path../thumb_smile.png')

b = Blog.new
b.title = "a blog"
b.body = "some text"
b.image = image
b.save

感谢您对CarrierWave的解释。 - Ivan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接