【问题标题】:Emailing text files as attachments from rake tasks, files are incomplete通过电子邮件将文本文件作为 rake 任务的附件发送,文件不完整
【发布时间】:2013-03-27 07:35:55
【问题描述】:

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

有什么建议吗?

【问题讨论】:

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


    【解决方案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.open一个block时,文件会自动关闭,即使block执行过程中发生异常。
    猜你喜欢
    • 2013-07-26
    • 2021-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-18
    • 2013-03-19
    • 1970-01-01
    相关资源
    最近更新 更多