4

У меня есть простое приложение, которое загружает изображение, которое я сохраняю, используя несущую в базе данных блогов. (с заголовком, телом и изображением), и мои учетные данные работают нормально.Carrierwave добавить изображения через «gekuu rails console» из s3 на стороне производства

Я изображение загружено в s3 счет с этим URL: /s3.amazonaws.com/Buket_name/..path../thumb_smile.png

Как я могу обновить базу данных с изображением из Heroku Рельсы консоли , Это не кажется, работает: атрибут

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 

ответ

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

Теперь изображение является 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 
+0

спасибо большое! Оба решения работают как шарм :) – Atul

+0

Спасибо за сообщение о несущей волне – Ivan

Смежные вопросы