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 どうでしょうか。
on 2012-07-18 13:38
on 2013-02-17 11:10
Issue #6751 has been updated by ko1 (Koichi Sasada). Target version changed from 2.0.0 to 2.1.0 ---------------------------------------- Bug #6751: remove tempfiles early. https://bugs.ruby-lang.org/issues/6751#change-36421 Author: akr (Akira Tanaka) Status: Assigned 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 どうでしょうか。
on 2013-02-17 13:07
2013$BG/(B2$B7n(B17$BF|(B 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 $B$G%Q%C%A$,Ev$?$C$F$$$k$h$&$J5$$,$7$^$9!#(B
on 2013-02-17 14:52
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 どうでしょうか。
Please log in before posting. Registration is free and takes only a minute.
Existing account
(Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
Log in with Google account | Log in with Yahoo account
No account? Register here.