ファイルロックに関する事なんですが、みなさんはどの様なロジックで組んでますか?
自分は普通に以下みたいな感じなんですが、ごくたまにファイルが壊れる事があるんですよね…
なにか良い方法があればご教示お願いします。

File.open('data.dat', 'r'){|file|
file.flock(File::LOCK_SH)
file.read
}

File.open('data.dat', 'w'){|file|
file.flock(File::LOCK_EX)
file.write(data)
}