Rails3で稼働しているアプリケーションをRails5にアップデートしようと思っています。
Rails5のプロジェクトを新規作成し、現状のアプリケーションと同じサーバー内で2つを並行稼動させ、Nginx側でURLによるルーティングをすることで徐々に5へ移行していくような計画をたてています。
静的なページはこれでうまく動いているのですが、ログインが必要なページでセッションが共有されず困っています。
Rails3とRails4以降ではセッション暗号化の仕組みが変わっているようなので、下記の記事を参考に設定を行いました。
1. 新旧Railsでセッションストアの設定を統一
ruby
1# config/initializers/session_store.rb 2Rails.application.config.session_store :cookie_store, key: 'example.net_session'
2. Rails5のcookie形式をjsonからmarshalに変更
ruby
1Rails.application.config.action_dispatch.cookies_serializer = :marshal # default: :json
3. Rails5のsecret_key_baseの設定を消し、代わりにsecret_tokenを設定
secret_tokenはRails3のconfig.secret_token と同じ値です
ruby
1development: 2 # secret_key_base: abc123... 3 secret_token: 123abc...
4. Deviseのsecret_keyを設定
これも新旧Railsで共通の値を入れています
ruby
1Devise.setup do |config| 2 config.secret_key = "xyz123" 3~~~ 4end
設定は以上です。
ローカルで2つのRails(WEBrickとPuma)をdocker内で立ち上げ、本番と同じようにNginxでURLによってproxy_passを振り分けるという方法でテストしています。
Rails3側でログインし、次にRails5側で実装済みのページに移動するとcookieが書き換えられてしまい、非ログイン状態に戻ってしまいます。
他に試すべきこと、確認事項などあれば些細な事でも結構ですので、助言を頂けると幸いです。よろしくお願いします。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。