[Rails] Change session store…

Стало валиться одно из рельсовых приложений с эксепшеном:

ActionDispatch::Cookies::CookieOverflow (ActionDispatch::Cookies::CookieOverflow)

Суть проблемы в том, что по умолчанию сессия хранится в куках, а там, в свою очередь, ограничение по объему в 4кб. Мда, не разгуляешься.
Решение – сменить место хранения сессии на бд…

Для начала правим файл config/initializers/session_store.rb. В этом файле необходимо расскоментировать последнюю строчку и закомментировать третью. Т.о. этот файл должен выглядеть примерно так:

# Be sure to restart your server when you modify this file.

#Opt::Application.config.session_store :cookie_store, :key => '_opt_session'

# Use the database for sessions instead of the cookie-based default,
# which shouldn't be used to store highly confidential information
# (create the session table with "rails generate session_migration")
Opt::Application.config.session_store :active_record_store

После этого в папке с приложением выполняем раке, который создаст миграцию для сессии:

rake db:sessions:create

После выполняем миграцию для добавления таблицы с полями сессии в бд:

rake db:migrate

Теперь вылетов с переполнением сессии не должно быть.
з.ы. для работы с уже существущей сессией, необходимо добавить в свой хоум/аппликашен контроллер такой код:

session.model.id = session.session_id
Advertisements

2 comments

  1. chel · August 22, 2011

    Какая связь между максимальным размером кук и спсобом хранения сессий на сервере?

    • Sfate · September 17, 2011

      сори за долгий респонс =)

      связь прямая..
      а именно.. мы имеем то, что сессия по умолчанию храниться в куках… а их размер ограничен..
      следовательно если обьем информации помещаемый в сессию превышает 4кб, то имеем вышеописанную ситуацию =)

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s