Seguimiento del progreso de carga del archivo a S3 con Ruby aws-sdk

En primer lugar, soy consciente de que hay algunas preguntas similares a esta en SO. He leído la mayoría, si no todos, en la última semana. Pero todavía no puedo hacer que esto funcione para mí.

Estoy desarrollando una aplicación Ruby on Rails que permite a los usuarios cargar archivos mp3 en Amazon S3. La carga en sí misma funciona perfectamente, pero una barra de progreso mejoraría enormemente la experiencia del usuario en el sitio web.

Estoy usando la gema aws-sdk, que es la oficial de Amazon. He buscado en todas partes en su documentación las devoluciones de llamada durante el proceso de carga, pero no pude encontrar nada.

Los archivos se cargan de uno en uno directamente a S3, por lo que no es necesario cargarlos en la memoria. No es necesario subir archivos múltiples tampoco.

Pensé que podría necesitar usar JQuery para hacer que esto funcione y estoy de acuerdo con eso. Encontré esto que parecía muy prometedor:https://github.com/blueimp/jQuery-File-Upload E incluso intenté seguir el ejemplo aquí:https://github.com/ncri/s3_uploader_example

Pero simplemente no pude hacerlo funcionar para mí.

La documentación de aws-sdk también describe brevemente las cargas de transmisión con un bloque:

  obj.write do |buffer, bytes|
     # writing fewer than the requested number of bytes to the buffer
     # will cause write to stop yielding to the block
  end

Pero esto es apenas útil. ¿Cómo se "escribe en el búfer"? Probé algunas opciones intuitivas que siempre darían lugar a tiempos de espera. ¿Y cómo podría incluso actualizar el navegador basado en el almacenamiento en búfer?

¿Hay una solución mejor o más simple para esto?

Gracias de antemano. Agradecería cualquier ayuda en este tema.

Respuestas a la pregunta(2)

Su respuesta a la pregunta