我有一个rake任务可以做很多事情,但无论如何写入文本文件,如下所示,
handler = File.open("cheese.txt", "a+")
handler.write("====Starting write!====\n")
handler
现在,我正在捕捉CTRL + C事件,如下所示,
Kernel.trap('INT') {
email_files # A method that cd to a PATH and attaches "cheese.txt" and use RAILS MAILERS to email
abort("Files Emailed, kernel trapped!")
}
问题是,第一次执行CTRL + C时,传送的文本文件没有任何内容, 但从下次开始,它就是正确的。
任何建议?
答案 0 :(得分:1)
添加新行后关闭文件:
File.open("cheese.txt", "a+") do |handler|
handler.write("====Starting write!====\n")
end
UPD:http://www.ruby-doc.org/core-2.0/File.html#method-c-open:
没有关联的块,File.open是:: new的同义词。如果给出了可选的代码块,它将作为参数传递打开的文件,当块终止时,File对象将自动关闭。