我目前正在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。该文件已成功包含电子邮件的内容。
答案 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)