Bug #6751

remove tempfiles early.

Added by Akira Tanaka almost 2 years ago. Updated about 1 year ago.

[ruby-dev:45973]
Status:Closed
Priority:Normal
Assignee:Takeyuki FUJIOKA
Category:lib
Target version:2.1.0
ruby -v:ruby 2.0.0dev (2012-07-18 trunk 36442) [x86_64-linux] Backport:

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 SUPPORTSINFOSIGNAL
end
+ if !(livetempfiles = ObjectSpace.eachobject(Tempfile).findall {|t| t.path }).empty?
+ puts nil, "after #{self.
name}", *livetempfiles.map {|t| t.inspect }
+ live_tempfiles.each {|t| t.unlink }
+ end
result
end

どうでしょうか。

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

History

#1 Updated by Koichi Sasada about 1 year ago

  • Target version changed from 2.0.0 to 2.1.0

#2 Updated by Akira Tanaka about 1 year ago

2013年2月17日 19:10 ko1 (Koichi Sasada) redmine@ruby-lang.org:

Issue #6751 has been updated by ko1 (Koichi Sasada).

Target version changed from 2.0.0 to 2.1.0

r37471 でパッチが当たっているような気がします。
--
[田中 哲][たなか あきら][Tanaka Akira]

#3 Updated by Takeyuki FUJIOKA about 1 year ago

  • Status changed from Assigned to Closed

チケットの更新し忘れでした。
akrさんの言う通り、パッチはすでに当たっています。

Also available in: Atom PDF