2010-10-28 16 views
5

en cierto modo me quieren hacer the reverse of this.¿Cómo puedo generar archivos y luego comprimir/comprimir con Heroku?

En lugar de descomprimir y añadiendo los archivos de la colección a S3 que quiero

A petición del usuario:

  1. generan un montón de archivos XML
  2. postal los archivos xml con algunas imágenes (imágenes preexistentes alojadas en s3)
  3. descargar zip

¿Alguien sabe una buena manera de hacer esto? Creo que podría solucionar esto sin problemas en una máquina normal, pero Heroku complica algo las cosas, ya que tiene un sistema de archivos de solo lectura.

Respuesta

4

De la documentación heroku en el read-only filesystem:

Hay dos directorios que se pueda escribir: ./tmp y ./log (bajo la raíz de su aplicación). Si desea soltar temporalmente un archivo mientras dura la solicitud, puede escribir en un nombre de archivo como # {RAILS_ROOT}/tmp/myfile _ # {Process.pid}. No hay garantía de que este archivo estará allí en las solicitudes posteriores (aunque podría ser), por lo que no debe utilizarse para ningún tipo de almacenamiento permanente.

Usted debe ser capaz de escribir con bastante facilidad sus archivos XML generados a tmp/ y llevar un registro de los nombres, descarga y escribir los archivos s3 en el mismo directorio, y (tal vez?) Invocar un comando zip, siempre y cuando la salida está en tmp/, luego sirva el archivo en el navegador con el tipo de mime correcto para solicitar una descarga. Solo me preocuparía qué tan grande es el tamaño del archivo y si heroku tiene un límite no documentado sobre lo que permitirán en el directorio tmp. Especialmente dado que solo está realizando esta acción para una descarga única durante la duración de una sola solicitud, creo que tiene muchas posibilidades de poder hacerlo.

Editar: Mirando un poco, podría ser capaz de usar algo como RubyZip para crear su archivo zip si desea evitar llamar a los comandos del sistema.

+0

Bien Brett, esto suena como un ganador. En primer lugar, creo que solo necesitaríamos el zip para la duración de la solicitud. Si es necesario por más tiempo podemos moverlo hasta s3 ... Sí, parece factible. ¡Aclamaciones! – digitalWestie

+0

rubyzip tiene problemas al crear archivos zip que son compatibles con Windows. rubyzip2 tiene los mismos problemas y también la gema zip. –

Cuestiones relacionadas