J'essaie de créer un Tempfile et d'y écrire du texte. 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
Suis-je en train de manquer quelque chose? Ou quelle est la bonne façon d'écrire dans Tempfile
?
Pour info j'utilise Ruby 1.8.7 et Rails 2.3.12
Vous allez vouloir fermer le fichier temporaire après y avoir écrit. Ajoutez simplement un t.close
jusqu'à la fin. Je parie que le fichier a une sortie tampon.
Essayez cette course t.rewind
avant lecture
require 'tempfile'
t = Tempfile.new("test_temp")
t << "Test data"
t.write("test data") # => 9
IO.read t.path # => ""
t.rewind
IO.read t.path # => "Test datatest data"
close
ou rewind
écrira le contenu du fichier. Et vous voudrez peut-être le supprimer après avoir utilisé:
file = Tempfile.new('test_temp')
begin
file.write <<~FILE
Test data
test data
FILE
file.close
puts IO.read(file.path) #=> Test data\ntestdata\n
ensure
file.delete
end
Il convient de mentionner, d'appeler .rewind
est indispensable, ou tout _ .read
l'appel renverra simplement une valeur vide