RailsでDBセッションを使う

Post date: 2009/05/19 9:49:31

Status: 500 Internal Server Error

ActionController::Session::CookieStore::CookieOverflow

というエラーが出るようになったので、セッションデータをDBにストアするよう変更する。

CookieStoreは、 セッションデータをサーバ上のファイルやDBに保存する代りに、クッキー自体に保存する。 このため、セッションデータの読み書きのコストが減ったり、古いセッションデータ の掃除の手間がなくなる、という利点があるとのことだが、容量が4kしかないらしい。

必要な変更:

  1. config/environment.rbで以下の行をアンコメントする:
    1. config.action_controller.session_store = :active_record_store
  2. 以下を実行してセッション格納用テーブルを作成する
    1. rake db:sessions:create
    2. rake db:migrate
  3. app/controllers/application.rbで以下のような部分で、:secret前のコメントを外す:
    1. protect_from_forgery # :secret => '6d0b20bbf9203508337aff3214f79efb7a0'