我試圖在系統$ 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
是的,我將在確保塊核彈一次使用的文件運行此)
我上紅寶石2.2.2運行此和使用vim。
你使用的是什麼版本的ruby,以及你用什麼編輯器來編輯內容。 –
我評論過 - 你認爲它有什麼不同? –
如果你使用的不是vim,它會有所作爲,因爲對'system'的調用會在編輯器本身之前退出。我的第一個猜測是你在編輯器寫入任何字節之前試圖讀取文件。 我想我已經找到了你的修復方法,請看下面的答案。 –