Permission denied
組み込み関数 open についてマニュアルには以下の様に書いてあります。
open がブロックとともに呼び出された時、 open はファイルをオープンしてブロックを実行し、 ブロックの実行が終了するとファイルをクローズします。 この場合はブロックを評価した結果を返します。
でもきちんとクローズされてないっぽいです。
require 'fileutils' if !File.exist?("test.txt") open("test.txt" , "w") {|file| file.puts "test" } end open("test.txt").each {|line| puts line } FileUtils.rm("test.txt")
これを実行すると Permission denied が発生します。
エラーが出ない様に、明示的に close を入れます。
require 'fileutils' if !File.exist?("test.txt") open("test.txt" , "w") {|file| file.puts "test" } end f = open("test.txt") f.each{|line| puts line } f.close FileUtils.rm("test.txt")
エラーが発生するのは
ruby 1.8.5 (2006-08-25) [i386-mswin32]
発生しないのは
ruby 1.8.4 (2005-12-24) [i486-linux]
既出?