1

リクエスト サイクルで発生する非常に長い操作 (平均で約 30 秒) があります。非常にめったに実行されず、管理ポータルを介してのみ実行されるため、大したことではありません。それ以外の場合は、Resque などにプッシュします。

リクエストが開始され、オブジェクトにフラグが設定されていない場合、コントローラー メソッドで最初に行われるのは、フラグの設定です。

def create
  raise if @foo.flag?
  @foo.update_attributes! flag: true
  # perform lengthy operation
ensure
  @foo.update_attributes! flag: false
end

最初のリクエストを開始すると、フラグが true に設定され、操作が開始されます。次に、最初のリクエストがハングしている間に 2 番目のリクエストを開始すると、Rails コンソールでフラグが true であることがはっきりとわかりますが、エラーは発生しません@foo

私は、データベース トランザクションをコミットするという印象を受けていたupdate_attributes!ので、後続のリクエストで変更が表示されるはずです。そうではありませんか?

シンサーバーを使用した開発でテストしています。これを行う方法はありますか?

4

0 に答える 0