From: "xibbar (Takeyuki Fujioka)" Date: 2013-02-17T22:50:51+09:00 Subject: [ruby-dev:47017] [ruby-trunk - Bug #6751][Closed] remove tempfiles early. Issue #6751 has been updated by xibbar (Takeyuki Fujioka). Status changed from Assigned to Closed チケットの更新し忘れでした。 akrさんの言う通り、パッチはすでに当たっています。 ---------------------------------------- Bug #6751: remove tempfiles early. https://bugs.ruby-lang.org/issues/6751#change-36440 Author: akr (Akira Tanaka) Status: Closed Priority: Normal Assignee: xibbar (Takeyuki Fujioka) Category: lib Target version: 2.1.0 ruby -v: ruby 2.0.0dev (2012-07-18 trunk 36442) [x86_64-linux] cgi.rb で、テンポラリファイル (Tempfile) をなるべく早く消すようにすると良いと 思うのですがいかがでしょうか。 いずれ GC で消されるはずなので、Bug というほどの話ではありませんが。 ./ruby test/runner.rb test/cgi の各テストでテンポラリファイルが残らないように したものを cgi-tempfile.patch として作ってみました。 * read_multipart で params に入れないものはそこで消す * read_multipart で例外が起きたら、内部で作ったものはすべて消す * テスト内で作ったものはテストが終わる前に消す なお、テスト毎に残っていないか確認するのは以下のようにして行いました。 Index: lib/minitest/unit.rb =================================================================== --- lib/minitest/unit.rb (revision 36442) +++ lib/minitest/unit.rb (working copy) @@ -1082,6 +1082,10 @@ module MiniTest end trap 'INFO', 'DEFAULT' if SUPPORTS_INFO_SIGNAL end + if !(live_tempfiles = ObjectSpace.each_object(Tempfile).find_all {|t| t.path }).empty? + puts nil, "after #{self.__name__}", *live_tempfiles.map {|t| t.inspect } + live_tempfiles.each {|t| t.unlink } + end result end どうでしょうか。 -- http://bugs.ruby-lang.org/