Project

General

Profile

Actions

Bug #6751

closed

remove tempfiles early.

Added by akr (Akira Tanaka) over 12 years ago. Updated almost 12 years ago.

Status:
Closed
Target version:
ruby -v:
ruby 2.0.0dev (2012-07-18 trunk 36442) [x86_64-linux]
Backport:
[ruby-dev:45973]

Description

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
    

どうでしょうか。


Files

cgi-tempfile.patch (2.95 KB) cgi-tempfile.patch akr (Akira Tanaka), 07/18/2012 08:37 PM
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0