Ruby comment écrire dans un fichier temporaire
Je suis en train de créer un fichier temporaire et écrire du texte dedans. Mais je reçois ce comportement étrange dans la console rails
t = Tempfile.new("test_temp") # => #<File:/tmp/test_temp20130805-28300-1u5g9dv-0>
t << "Test data" # => #<File:/tmp/test_temp20130805-28300-1u5g9dv-0>
t.write("test data") # => 9
IO.read t.path # => ""
J'ai aussi essayé cat /tmp/test_temp20130805-28300-1u5g9dv-0
mais le fichier est vide
Ai-je raté quelque chose ? Ou quelle est la bonne façon d'écrire à Tempfile
?
Pour info je suis en utilisant ruby 1.8.7 et les rails 2.3.12
- Compris
t.flush
est la solution parfaite.
Vous devez vous connecter pour publier un commentaire.
Vous allez vouloir fermer le fichier temp après avoir écrit pour elle. Il suffit d'ajouter une
t.close
à la fin. Je parie que le fichier a mis en mémoire tampon de sortie.t.close
œuvres.IO.read
(File.read
) est l'une de ces méthodes, en fonction de la documentation. "lire la assure le fichier est fermé avant de revenir."Essayer cette
exécuter
t.rewind
avant de lireZip::File.open(f)
. sinon, il va se plaindre à propos de fichier fermé.t << "Test data"
?close
ourewind
serviront à l'écriture de contenu de fichier. Et vous pouvez la supprimer après l'utilisation:Il convient de mentionner, en appelant
.rewind
est un must, ou de tout autre.read
appel sera de retour juste valeur vide