From: Takeyuki Fujioka <xibbar@...> Date: 2011-04-21T21:20:46+09:00 Subject: [ruby-dev:43418] [Ruby 1.9 - Feature #4592] Tempfileを直接保存したい Issue #4592 has been updated by Takeyuki Fujioka. 卜部さんの言うとおりなのですが、ユースケースを書きますと、 Railsもcgi.rbも巨大なファイルをアップロードしたときは tempfileにファイルを保存します。 これを保存したいとなったときに、 tempfileから読みだして、別ファイルをオープンして 書きこむという手間とメモリが必要なので、 tempfileに入っているんだから、そのままリネームでもして 保存出来ればいいのになと思ったのでした。 ちなみに卜部さんのやり方ももちろんOKですが、 私的にはHTTP Requestをまたいで使いたいので、 tempfileを消えないようにだけするという対応でも OKなのでした。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