Carrierwave通过“heroku rails console”从生产方面的s3添加图片

时间:2013-09-09 22:42:40

标签: ruby-on-rails image-processing heroku amazon-s3 carrierwave

我有一个简单的应用程序上传我在博客数据库中使用carrierwave保存的图片。 (有头衔,身体和形象),我的证书工作正常。

我在s3帐户中使用此网址上传了一张图片: /s3.amazonaws.com/Buket_name / ..路径../ 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 个答案:

答案 0 :(得分:6)

使用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')

现在image是Tempfile,可以像Ruby脚本中的文件一样使用。

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