プログラムの修正をしていると、テンポラリファイルで更新した内容が最終的なターゲットファイルに反映されない問題が発生した。単純化すると、下みたいなコードを書いていた。
require 'tempfile' require 'fileutils' tmpfile = Tempfile.new("test") tmpfile.write "test string" FileUtils.cp(tmpfile.path, "./newfile")
そう、問題はたんにファイルクロースしていないからだ。
tmpfile.close
をcpの前に実行すれば良いだけだった。