From: Shyouhei Urabe Date: 2011-04-21T17:17:02+09:00 Subject: [ruby-dev:43417] [Ruby 1.9 - Feature #4592] Tempfileを直接保存したい Issue #4592 has been updated by Shyouhei Urabe. * closeと同時というのを諦め、closeのちょっと後でよければ、普通にmvできるのではないでしょうか。 irb(main):001:0> f = Tempfile.new('') => # irb(main):002:0> f.puts("foobar") => nil irb(main):003:0> f.close; File.rename(f, "tmp.txt") => 0 irb(main):008:0> File.read("tmp.txt") => "foobar\n" * /tmpとRubyのカレントディレクトリが別パーティションだったら、どのみちコピーは発生するのではないでしょうか。 * Tempfileを保存したいというのはTempfileの意味からして本末転倒なのではないでしょうか。 といった感想を抱きました。 ---------------------------------------- Feature #4592: Tempfileを直接保存したい http://redmine.ruby-lang.org/issues/4592 Author: Takeyuki Fujioka Status: Open Priority: Normal Assignee: Category: lib Target version: Tempfileは一時ファイルなので、プロセスが消えたり、#closeすると、 ファイルが消えてしまいます。 Tempfileのデータを保存するために 一旦読みだして、書き込み用に別ファイルを開いて、 そこに書きこまなければいけません。 これが小さいファイルだったらいいのですが、 大きいファイルになると、 Tempfile#save みたいなメソッドを用意して、 closeと同時に保存ができると、 読みだして書きこむという無駄をなくすことができます。 10MB程度だったらいいのですが、500MとかのTempfileだと かなり有効なメソッドだと思います。 #save とか #save! とか、何がいいかは議論の余地があると思います。 -- http://redmine.ruby-lang.org