Rails 3.2.18アプリでかなり奇妙な問題が発生し始めました
Railscasts で説明されているように、Cookie による認証を使用しています。過去 1 年間 (3.2.18 にアップグレードするまで) はすべて順調でした。
しかし、私は今次の問題を抱えています。正常にログオンでき、いくつかのページに移動できます。ただし、不明な数のページ クリックの後、500 内部ページ エラーが発生します。本番ログに次のエラーが表示されます (実際のトークン コードを変更しました)
ActiveRecord::RecordNotFound (Couldn't find User with auth_token = XXXXXXXXXXXXXX):
app/controllers/application_controller.rb:28:in `current_user'
そのユーザーのデータベース エントリを見ると、正しい auth_token エントリが表示されます。アプリケーション コントローラーで参照されているコード行は次のとおりです。
@current_user ||= User.find_by_auth_token!(cookies[:auth_token]) if cookies[:auth_token]
そうです、Rails 4 で機能するためには、これを find_by ステートメントではなく where ステートメントに置き換える必要がありますが、これが問題を引き起こしているとは思いません。最初の認証とその後の数ページも奇妙ですクリックは機能しますが、機能しません。
再度ログインできるようにするには、ブラウザー セッションをシャットダウンする必要があります (Firefox、Safari、および IE でも同じです)。その後、再起動すると、しばらくの間ログインできます。
さらに、この問題は開発では発生せず、本番環境でのみ発生します