rubyでファイル内の文字列置き換え

rubyでカレントディレクトリ内のファイル全てを1つずつ読み込んで、ファイル内の特定の文字列を特定の文字列で置き換える必要があった。
rubyで書いたのでメモ。

#!/usr/bin/ruby

#置換対象文字列
str='XXX';

#ファイルを修正するメソッド定義
def replaceString(f,str)
  f.rewind;
  body = f.read;
  body = body.gsub(str) do |tmp|
   #この文字列で置き換える
   'REPLACED String'
  end
  
  f.rewind;
  f.puts body;
end

#カレントディレクトリのファイル取得
files = Dir.glob('*.txt')

#ファイル1つずつを処理
files.each do |item|
 #ファイル1つを開く
 open(item,"r+") {|f|  
  f.flock(File::LOCK_EX)
  
  replaceString(f,str);
    
  f.truncate(f.tell);
 }
end