システム$ EDITORでtmpfileを開いて書き込みを行い、出力を読み込もうとしています。私はそれを動作させることができますが、なぜfile.readを呼び出すのが空の文字列を返しているのだろうと思います(ファイルに内容があるとき)Ruby:システムプロセスによって書き込まれたファイルからの読み込み
基本的に私はファイルの読み方が正しいに書かれている。
require 'tempfile'
file = Tempfile.new("note")
system("$EDITOR #{file.path}")
file.rewind
puts file.read # this puts out an empty string "" .. why?
puts IO.read(file.path) # this puts out the contents of the file
はい、私は一度使用したファイルをNukeのために確実にブロックでこれを実行しているされます。)私はルビー2.2.2でこれを実行し、Vimを使用していた
。
あなたはどのバージョンのRubyを使用していますか、どのエディタを使って内容を編集しましたか? –
私はコメントしました - どのような違いがあると思いますか? –
vim以外のものを使用していた場合、 'system'への呼び出しがエディタ自体の前に終了するため、それは違いがあります。私の最初の推測では、エディタがバイトで書かれる前にファイルを読み込もうとしていたということでした。 私はあなたの修正を見つけたと思う、以下の私の答えを参照してください。 –