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

Atu*_*tul 4 ruby-on-rails image-processing heroku amazon-s3 carrierwave

我有一个简单的应用程序上传我在博客数据库中使用carrierwave保存的图片.(有标题,正文和图像),我的证书工作正常.

我使用此网址在s3帐户中上传了一张图片:/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
Run Code Online (Sandbox Code Playgroud)

Ben*_*nns 7

使用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
Run Code Online (Sandbox Code Playgroud)

此功能特定于CarrierWave,因此如果您希望与其他库执行类似操作,请使用open-uri标准库.

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

现在,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
Run Code Online (Sandbox Code Playgroud)