通过电子邮件将文本文件作为rake任务的附件,文件不完整

时间:2013-03-27 07:35:56

标签: ruby-on-rails ruby file email file-handling

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

任何建议?

1 个答案:

答案 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对象将自动关闭。