【问题标题】:Carrierwave add pictures through "heroku rails console" from s3 on production sideCarrierwave 在生产端通过 s3 的“heroku rails 控制台”添加图片
【发布时间】:2013-09-13 12:43:27
【问题描述】:

我有一个简单的应用程序,可以上传我在博客数据库中使用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

【问题讨论】:

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


    【解决方案1】:

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

    现在图像是 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
    

    【讨论】:

    • 感谢carrierwave的解释
    猜你喜欢
    • 1970-01-01
    • 2014-02-03
    • 1970-01-01
    • 2012-03-23
    • 1970-01-01
    • 1970-01-01
    • 2012-02-10
    • 1970-01-01
    • 2013-06-04
    相关资源
    最近更新 更多