Actions
Feature #11715
closedTempfile.create unlinked file silently fails
Status:
Rejected
Assignee:
-
Target version:
-
Description
ファイルを作成してデータを書き込んでから読み込んで利用するプログラムにおいて、
全て書き込み終わるまでは他のプロセスからアクセスされたくないので、
ファイルをアトミックに作成する方法として、Tempfileに一旦書き込んでからrenameする方法が使われています。
似たようなことをしたい場合、
Tempfile.openでは、以下の場合エラーが発生しませんが、
Tempfile.open("foo") do |f|
f.close
File.rename f.path, "bar"
end
Tempfile.createの場合はエラーになります。
Tempfile.create("foo") do |f|
f.close
File.rename f.path, "bar"
end
#=> Errno::ENOENT: No such file or directory
Tempfile.createでもエラーが発生しないようになると、
ライブラリーなどの挙動を変えずに、より両者で似たような挙動を期待できるようになるのではないでしょうか。
それとも意図された挙動なのでしょうか。
エラーが発生しないように修正したパッチを添付します。
Files
Actions
Like0
Like0Like0Like0