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の同義語です。オプションのコードブロックを指定すると、開いているファイルが引数として渡され、ブロックが終了するとFileオブジェクトが自動的に閉じられます。

于 2013-03-27T08:06:06.630 に答える