SmartCookieStore is a fix for the current (as of 2.3.5) Rails
CookieStore. The problem with the CookieStore as is, is that it
sends a Set-Cookie header whenever the session (including the flash)
is accessed. This means that whenever you have a call to flash[:notice]
in your layout file, a Set-Cookie will be sent to the client. Even if
the session/flash is completely empty! This is problematic when you want
to use something like Varnish. By default it doesn't cache pages that
send a header (and rightly so).
This plugin adds a new CookieStore, the SmartCookieStore that checks
if the session is empty and only sends the Set-Cookie header when the
session is not empty.
gem install smart_cookie_store
And add it to your config/environment.rb:
config.gem "smart_cookie_store"
script/plugin install git://github.com/msales/smart_cookie_store.git
The configure your app to use the new SmartCookieStore:
ActionController::Base.session_store = :smart_cookie_store
This is an initial release that was only tested on Rails 2.3.5!
This plugin should also include a SmartAbstractStore that fixes the
Rails AbstractStore. This is the parent class of the ActiveRecordStore
which would fix its behaviour in turn. Some unit tests would be good, too ;)