我试图在系统$ 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'的调用会在编辑器本身之前退出。我的第一个猜测是你在编辑器写入任何字节之前试图读取文件。 我想我已经找到了你的修复方法,请看下面的答案。 –