[#45910] [ruby-trunk - Bug #6694][Open] Thread.new without block. — "ko1 (Koichi Sasada)" <redmine@...>

24 messages 2012/07/04

[#45913] [ruby-trunk - Bug #6698][Open] MacOSXではDir.globが返すファイル名の内容はUTF8-MACですがencodingがUTF-8になっている — "imkira (Mario Freitas)" <imkira@...>

10 messages 2012/07/04

[#45933] [ruby-trunk - Bug #6716][Open] FileUtils.mv でリンク先がないシンボリックリンクファイルを指定すると ENOENT エラーになる — "tommy (Masahiro Tomita)" <tommy@...>

8 messages 2012/07/10

[#45976] [ruby-trunk - Bug #6756][Open] FileUtils.rm_rf がアクセス権のない空ディレクトリを削除しない — "fumiyas (Fumiyasu SATOH)" <fumiyas@...>

9 messages 2012/07/20

[#46012] [ruby-trunk - Feature #6812][Open] Refactor gc.c — "authorNari (Narihiro Nakamura)" <authorNari@...>

13 messages 2012/07/30

[ruby-dev:45973] [ruby-trunk - Bug #6751][Assigned] remove tempfiles early.

From: "akr (Akira Tanaka)" <akr@...>
Date: 2012-07-18 11:37:42 UTC
List: ruby-dev #45973
Issue #6751 has been reported by akr (Akira Tanaka).

----------------------------------------
Bug #6751: remove tempfiles early.
https://bugs.ruby-lang.org/issues/6751

Author: akr (Akira Tanaka)
Status: Assigned
Priority: Normal
Assignee: xibbar (Takeyuki Fujioka)
Category: lib
Target version: 2.0.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/

In This Thread

Prev Next