Tengo una aplicación Ruby, y necesito modificar un archivo zip existente.¿Cómo puedo modificar un archivo zip solo en la memoria?
Quiero construir el archivo zip en la memoria y transmitir de vuelta los bytes sin tener que escribir el archivo en el sistema de archivos. Si termino alojando esto en Heroku, no creo que pueda escribir en el sistema de archivos. ¿Alguien sabe de una manera de hacer eso?
Miré Zip::ZipFile pero parece que siempre quiere escribir en el sistema de archivos. Pensé que "basándome en la implementación de Java" podría obtener los bytes del archivo comprimido, lo que puedes hacer en Java, pero no veo la manera de hacerlo.
Editar:
Lo que pido es básicamente el mismo que este, pero para Ruby en lugar de Python: Function to create in-memory zip file and return as http response
Does not Tempfile crear un archivo? –
Sí, marca (a menos que su directorio temporal viva en la memoria), pero rally25rs no especificó por qué no quería crear un archivo.Hago una suposición que me llevó a una solución que a) funcionará bien en Heroku, yb) crea un archivo, pero un rally25rs nunca tendrá que pensar de nuevo, y que será limpiado por el sistema operativo. Si esto no resuelve su problema central, me gustaría saberlo. –
Supongo que mi intención original era evitar esta restricción de Heroku de un filesytem de solo lectura: http://docs.heroku.com/constraints#read-only-filesystem, pero creo que puedo escribir en el archivo temp en/tmp directorio si es necesario. Soy bastante nuevo para Ruby, pero implementar esto en Java sería muy simple para mantener todo el archivo en un búfer de memoria, así que pensé que también lo estaría en Ruby. ¡Gracias por la ayuda! – CodingWithSpike