【Ruby3.x】CSV::flock()メソッドの使い方
flockメソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
flockメソッドは、CSVオブジェクトが扱うファイルに対し、複数プロセスからの同時アクセスを制御するためのファイルロックを実行するメソッドです。
このメソッドは、複数のプログラムが同じCSVファイルを同時に読み書きしようとした際に発生する可能性のあるデータ破損や不整合を防ぐ目的で使用されます。ファイルへのアクセスを排他的にしたり、読み込みのみ許可する共有アクセスに制限したりすることが可能です。
引数にFile::LOCK_EXを指定すると、他のプロセスからの読み書きを一切禁止する排他ロックを設定できます。File::LOCK_SHを指定すると、他のプロセスからの読み込みは許可しつつ、書き込みは禁止する共有ロックを設定できます。設定したロックを解除するにはFile::LOCK_UNを使用します。
ロック取得時にFile::LOCK_NBを組み合わせることで、ロックが取得できない場合に待機せずすぐに処理を継続するノンブロッキングモードでの実行も可能です。
複数のリクエストが同時にCSVファイルを更新するような状況では、データの整合性を保つために非常に重要な機能です。ロックはプロセスがファイルを閉じたり終了したりする際に自動的に解除されますが、意図しない競合を防ぐためにも、明示的な解除が推奨されます。
構文(syntax)
1csv_object.flock(File::LOCK_EX)
引数(parameters)
引数なし
引数はありません
戻り値(return)
戻り値なし
戻り値はありません