Rails4:CookieOverflowエラーを解決する
セッションに巨大なデータを格納しようとしたら、CookieOverflowエラーとなる。 今回はTwitterのauth認証の際に色々なデータ(4KB以上)を格納しようとしたからみたいです。
解決方法
- セッションは使うけど、最小限のデータだけを格納する。
- セッションデータをActiveRecord上に格納する。
やったことないので、Activerecordに格納することにした。
1. データを格納するテーブルを作成する。
$ gem 'activerecord-session_store', github: 'rails/activerecord-session_store' $ bundle install
$ rails generate active_record:session_migration
$ rake db:migrate == 20140813104550 AddSessionsTable: migrating ================================= -- create_table(:sessions) -> 0.0130s -- add_index(:sessions, :session_id, {:unique=>true}) -> 0.0006s -- add_index(:sessions, :updated_at) -> 0.0005s == 20140813104550 AddSessionsTable: migrated (0.0142s) ========================
ちなみに以下でテーブルを作成できると書いていた方もおられましたが、私は無理でした。 たぶんRails4だから?
$ rake db:sessions:create $ rake db:migrate
2. データの格納方法を変更する
config/initializers/session_store.rb
を書き換える。
3. サーバーを立ち上げ直す
以上でエラーもなくなり、セッションデータをActiveRecord上に格納することができるようになった。