現在、Rails アプリケーションを 2.1.0 から 2.3.14 にアップグレードしています。現在、ほとんどの機能は正常に動作していますが、ユーザー セッションに奇妙な問題があります。
ユーザーがログインすると、これはセッションに保存され、ブラウザーの再起動後も使用できます。
ただし: ローカル サーバーを再起動し、認証が必要なページを読み込むと、次のようになります。
- Rails は、以前とまったく同じ session_id を持つ新しいセッション行をデータベースに作成します。
- アプリケーション内では、「古い」セッションは使用できず、古いセッション データは使用できません。
- その後、単にページをリロード (F5) すると、古いデータを含む正しいセッションが正常にロードされます。
アプリケーションはActionController::Base.session_store = :active_record_store
、複数のデータベースを使用します (サブドメインごとに 1 つ、私の決定ではありませんでした)。正しいデータベースが before_filter として選択され、レールはこれらのデータベースにセッションを保存します。
私の推測では、サーバーの再起動後、何かがまだ正しく設定されておらず、セッションが間違ったデータベースで検索され、最初のリクエストのために保持されます (ただし、を介して設定された後、正しいデータベースに保存されますActiveRecord::Base.establish_connection
)。
私の推測が正しければ、接続を確立した後に正しいセッションをロードすると、これが解決するはずです。セッションをデータベースから完全にリロードするか、Rails にすべてのセッションでカスタム データベースを使用するように指示する方法はありますか?
前もって感謝します!