2016-03-19 14 views

答えて

1

Rubyレベルでは、複数のプロセスがファイルへの書き込みを試みると、ライブラリをどのようにファイルを使用するかによってファイルがロックされるかどうか、ファイルを開くモード、ファイルを開くモードが異なります。 (ほとんどの場合、ライブラリがこの状況を処理するために何もしない場合)、複数のライターは、ファイルを破壊するような方法で、書き込みを互いに静かにインターリーブするか、最後のライターが勝つ可能性があります。

Railsレベルでは、Railsの実行方法によって異なります。 Rails自体はデフォルトではシングルスレッドなので、通常は1つのサーバで1つの通常設定されたRailsインスタンスを実行すると問題は発生しません。複数のRailsインスタンス(おそらく、Passengerやunicornのようなアプリケーションサーバによって制御される)を実行すると、問題が発生する可能性があります。

  • 実行して、各サーバー上のRailsアプリ(またはドッキングウィンドウコンテナまたはchrootされたのインスタンスを1つだけ:ライブラリはあなたのための複数のライターを処理しない、あなたはいくつかの方法でそれを回避することが可能と仮定すると、

    環境)。

  • ライブラリをフォークし、ファイル名にプロセスIDを含めるように変更します。それは私がやることです。