J'ai une application Ruby, et j'ai besoin de modifier un fichier zip existant.Comment puis-je modifier un fichier zip en mémoire seulement?
Je veux créer le fichier zip en mémoire et retransmettre les octets sans écrire le fichier dans le système de fichiers. Si je finis par l'héberger sur Heroku, je ne pense pas pouvoir écrire sur le système de fichiers. Est-ce que quelqu'un sait d'une façon de faire cela?
J'ai regardé Zip::ZipFile mais on dirait qu'il veut toujours écrire dans le système de fichiers. Je pensais être "basé sur l'implémentation java" je serais capable d'obtenir simplement les octets du fichier compressé, ce que vous pouvez faire en java, mais je ne vois pas un moyen de le faire.
Edit:
Ce que je vous demande est fondamentalement la même chose que cela, mais pour Ruby au lieu de Python: Function to create in-memory zip file and return as http response
Tempfile ne crée-t-il pas un fichier? –
Oui, Mark (à moins que votre répertoire temporaire ne soit en mémoire), mais rally25rs n'a pas précisé pourquoi il ne voulait pas créer de fichier.Je fais une hypothèse qui m'a conduit à une solution qui a) fonctionnera bien sur Heroku, et b) crée un fichier, mais un rally25rs n'aura plus jamais à y penser, et qui sera nettoyé par le système d'exploitation. Si cela ne résout pas son problème de base, j'aimerais le savoir. –
Je suppose que mon intention initiale était de contourner cette contrainte Heroku d'un système de fichiers en lecture seule: http://docs.heroku.com/constraints#read-only-filesystem mais je suppose que je peux écrire dans le fichier temporaire à/tmp répertoire si nécessaire. Je suis assez nouveau pour Ruby, mais l'implémentation en Java serait très simple pour garder tout le fichier dans un tampon mémoire, donc je me suis dit que ça aurait aussi été dans Ruby. Merci pour l'aide! – CodingWithSpike