rails images aws ruby-on-rails amazon-s3 carrierwave

ruby on rails - images - ¿Cómo asignar un archivo remoto a Carrierwave?



rails image upload (4)

Tengo un modelo de video con la siguiente definición:

class Video require ''carrierwave/orm/activerecord'' mount_uploader :attachment, VideoUploader mount_uploader :attachment_thumbnail, VideoThumbnailUploader ... end

Cuando cargo un archivo de video. También envía el archivo a nuestro servicio de codificación Zencoder, que codifica el archivo de video y crea una miniatura para él.

Normalmente, podría hacer algo como @ video.attachment.url, que devolverá la ruta del archivo de video. Me gustaría hacer lo mismo con la miniatura. ie @ video.attachment_thumbnail.url

Sin embargo, dado que el archivo adjunto es creado por nuestro servicio de codificación, que también lo carga a un contenedor S3 específico. ¿Cómo asigno el archivo adjunto a la columna attachment_thumbnail para el registro?

¿Puedo simplemente hacer algo como esto?

@video.update_attributes( :attachment_thumbnail => ''https://bucket_name.s3.amazonaws.com/uploads/users/1/video/1/thumb.png'' )

¿Es posible asignar archivos como este a Carrierwave?



Esto funcionó para mí, con CarrierWave 0.5.8

model.update_attributes(:remote_uploader_url => "http://path/to/image.jpg")

Por supuesto, necesita configurar remote_uploader_url para que attr_accessible para esto.


Puedes hacer lo siguiente:

@video.remote_attachment_thumbnail_url = ''https://bucket_name.s3.amazonaws.com/uploads/users/1/video/1/thumb.png''

Pero eso hará que Carrierwave descargue y reprocesa el archivo en lugar de simplemente convertirlo en la miniatura. Si no va a utilizar el procesamiento de Carrierwave, entonces puede que tenga más sentido almacenar la URL en la miniatura del modelo en lugar de usar Carrierwave.


Yo estaba buscando esto también.

El punto de bloqueo en el caso zencoder sería que Carrierwave no realiza un seguimiento de diferentes versiones de tipos de archivos para el archivo original. Solo hace referencia al archivo original.

Así que tener el archivo original como .mp4 una versión en miniatura como .png no funciona. Aunque puede tener un ''image.png'' y también rastrear ''thumb_png_image.png'', tampoco puede crear un ''thumb_jpg_image.jpg'' para el mismo archivo.

De lo contrario, podría crear una versión ficticia y usar versiones condicionales le indicará a CW que no la procese. Como CW crearía la versión ficticia de todos modos pero no la cargaría, podría hacer que haga referencia a una ruta que coincida con el archivo devuelto por Zencoder. Pero, oh, bueno...