remove rails mount_uploader aws ruby-on-rails ruby-on-rails-3.2 carrierwave

ruby-on-rails - rails - remove image carrierwave



Carga de una URL de archivo remoto desde Rails Console con Carrierwave (5)

Solo quería saber cómo se cargaría una url de archivo remoto usando Carrierwave en la consola de Rails.

Intenté lo siguiente sin suerte. Supongo que no está procesando el cargador?

user = User.first user.remote_avatar_url = "http://www.image.com/file.jpg" user.save

Muchas gracias


Eche un vistazo a la sección '' Carga de archivos desde una ubicación remota '' en esta página https://github.com/carrierwaveuploader/carrierwave

CarrierWave debe lanzar un error si la URL de la ubicación no es válida

2.1.3 :015 > image.remote_image_url = "http" => "http" 2.1.3 :016 > image.save! (0.2ms) BEGIN (0.2ms) ROLLBACK ActiveRecord::RecordInvalid: Validation failed: Image trying to download a file which is not served over HTTP

O si es un host desconocido:

2.1.3 :017 > image.remote_image_url = "http://foobar" => "http://foobar" 2.1.3 :018 > image.save! (0.4ms) BEGIN (0.4ms) ROLLBACK ActiveRecord::RecordInvalid: Validation failed: Image could not download file: getaddrinfo: nodename nor servname provided, or not known

También tenga en cuenta que si desea descargar imágenes remotas, debe remote_ el prefijo remote_ y _url con _url , como se muestra en el ejemplo


Es trabajo como:

url=''http://host.domain/file.jpg'' time=Time.now.to_i.to_s myfile=IO.sysopen("tmp/"+time+"_img."+url.split(".").last,"wb+") tmp_img=IO.new(myfile,"wb") tmp_img.write open(URI.encode(url)).read if File.exist?("tmp/"+time+"_img."+url.split(".").last) "tmp/"+time+"_img."+url.split(".").last image = ActionDispatch::Http::UploadedFile.new(:tempfile => tmp_img, :filename => File.basename(tmp_img)) else image=nil end @your_model.image=image @your_model.save


Estaba enfrentando el mismo problema. y el problema podría ser http está redirigiendo a https. Así que los reemplacé usando gsub de la siguiente manera:

image.remote_image_url = remote_image_url.gsub(''http://'',''https://'') image.save!

esto probablemente debería resolver el problema.


He tenido problemas con remote_avatar_url al no subir la imagen o arrojar ningún error. Para mí, hasta donde puedo decir, fue porque establecí lo siguiente en mi modelo.

attr_accessor :remote_avatar_url

Carrierwave cubre esto para usted, y aunque no entiendo por qué, configurarlo usted mismo molesta las cosas.


user = User.first user.remote_avatar = File.open(FILE_LOCATION) user.save

FILE_LOCATION puede ser

File.join(Rails.root, ''/files/png-sample.png'')

si el archivo se encuentra en una carpeta ''archivos'' en el proyecto de rieles