0

我有一个 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 时,交付的文本文件没有任何内容,但从下次它正确交付时开始。

有什么建议么?

4

1 回答 1

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 的同义词。如果给出了可选代码块,它将作为参数传递打开的文件,并且当块终止时,文件对象将自动关闭。

于 2013-03-27T08:06:06.630 回答