Ruby + Transloadit
Crea una Assembly firmada desde un proceso de Ruby con la gema oficial transloadit y un Template fijo.
Receta ejecutable
Crea la integración
El script envía un archivo local a un Template fijo, consulta periódicamente el estado con un límite finito e imprime la respuesta final.
- Instala la gema transloadit y crea un Template de Transloadit.
- Define TRANSLOADIT_KEY, TRANSLOADIT_SECRET y TRANSLOADIT_TEMPLATE_ID.
- Ejecuta ruby process_media.rb path/to/file.mp4.
Instalar
gem install transloaditprocess_media.rb
require 'transloadit'
transloadit = Transloadit.new(
key: ENV.fetch('TRANSLOADIT_KEY'),
secret: ENV.fetch('TRANSLOADIT_SECRET')
)
assembly = transloadit.assembly(
template_id: ENV.fetch('TRANSLOADIT_TEMPLATE_ID')
)
response = File.open(ARGV.fetch(0), 'rb') do |file|
assembly.create!(file)
end
response.reload_until_finished!(tries: 300)
puts responseAutenticación
- Lee la Auth Key y el Auth Secret del Workspace, así como el ID del Template fijo, desde variables de entorno del servidor.
- La gema oficial de Ruby firma las solicitudes a la API cuando se inicializa con el Auth Secret.
- Mantén las credenciales fuera de los entornos Ruby que se entregan al navegador y no permitas que llamadores no confiables seleccionen Steps arbitrarios.
Limitaciones y notas operativas
- create! devuelve el control después de que se crea la Assembly y se acepta la subida, no necesariamente después de que finaliza el procesamiento.
- reload_until_finished! consulta el estado periódicamente. Los trabajos en segundo plano deberían establecer un valor finito de tries y guardar el ID de la Assembly para conciliar su estado más adelante.
- Para subidas desde el navegador en una aplicación Rails, usa Uppy o el SDK de Rails en lugar de hacer pasar archivos grandes por un controlador como proxy.
Más integraciones