Ruby Tempfile不会在磁盘上创建文件

时间:2014-12-30 23:18:07

标签: ruby temporary-files

我目前正在Ruby上运行此代码。

file = Tempfile.new(['tempemail', '.html'])
file << email # Email is a Ruby String (not nil)

Launchy.open(file.path)

Launchy抱怨该文件不存在。我跑了猫并证实了这一点。有没有办法强制Ruby将Tempfile保存到磁盘?

编辑:

我做了一个额外的测试。我在Launchy.open之前添加了一个file.rewind和file.read。该文件已成功包含电子邮件的内容。

1 个答案:

答案 0 :(得分:0)

你能试试file.close

没有Launchy进行测试:

require 'tempfile'
file = Tempfile.new(['tempemail', '.html'])
file << 'xx' # Email is a Ruby String (not nil)

file.close #<- This is needed

p File.read(file.path) # -> 'xx'

没有file.close,你会得到一个空字符串。

如果您继续将数据写入文件,则可以使用close代替flush

require 'tempfile'
file = Tempfile.new(['tempemail', '.html'])
file << "xx\n" # Email is a Ruby String (not nil)

p file.path
file.flush

file << "yy\n" # Email is a Ruby String (not nil)
file.flush

p File.read(file.path)