Ich habe eine Ruby-Anwendung, und ich muss eine vorhandene Zip-Datei ändern.Wie kann ich eine Zip-Datei nur im Speicher ändern?
Ich möchte die Zip-Datei im Speicher erstellen und die Bytes zurückströmen, ohne jemals die Datei in das Dateisystem schreiben. Wenn ich das auf Heroku hosting, glaube ich nicht, dass ich in das Dateisystem schreiben kann. Kennt jemand eine Möglichkeit, das zu tun?
Ich schaute auf Zip::ZipFile, aber es sieht aus wie es immer in das Dateisystem schreiben möchte. Ich dachte mir, basierend auf der Java-Implementierung würde ich in der Lage sein, nur die Bytes der komprimierten Datei zu bekommen, was Sie in Java tun können, aber ich sehe keinen Weg, dies zu tun.
Edit:
Was ich frage ist im Grunde das gleiche wie das, aber für Ruby statt Python: Function to create in-memory zip file and return as http response
Erstellt Tempfile nicht eine Datei? –
Ja, es tut, Mark (es sei denn, Ihr Temp-Verzeichnis im Speicher), aber Rally25rs nicht angeben, warum er keine Datei erstellen wollte.Ich mache eine Annahme, die mich zu einer Lösung führte, die a) auf Heroku gut funktioniert, und b) eine Datei erstellt, aber eine Rallye25rs wird nie wieder darüber nachdenken müssen, und die vom Betriebssystem aufgeräumt wird. Wenn das sein Kernproblem nicht löst, würde ich gerne wissen. –
Ich vermute, dass meine ursprüngliche Absicht war, diese Heroku-Einschränkung eines schreibgeschützten Dateisystems zu umgehen: http://docs.heroku.com/constraints#read-only-filesystem, aber ich denke, ich kann in die temp-Datei in/tmp schreiben Verzeichnis bei Bedarf. Ich bin ziemlich neu in Ruby, aber die Implementierung in Java wäre sehr einfach, die gesamte Datei in einem Speicherpuffer zu behalten, also dachte ich, dass es auch in Ruby gewesen wäre. Danke für die Hilfe! – CodingWithSpike