Railsでは、セッションストアとしてデフォルトではCookieStoreを使用します。ActiveRecordStoreを使う機会も多いと思います。
セッションストアの動作を変更したい場合、モンキーパッチを当てる方法もありますが、継承してしまうのが一般的かと思います。
# config/initializers/a_session_store.rb
MyApp::Application.config.session_store :my_active_record_store
MyApp::Application.config.session_options = {:cookie_only => false}
require 'action_dispatch'
module ActionDispatch
module Session
class MyActiveRecordStore < ActiveRecord::SessionStore
# 何かオーバーライドする
end
end
end
ところでこの場合、jpmobile(2.0.5)のtrans_sid
がうまく動かなかったりします。
jpmobileはApplication.config.session_store.to_s
が"ActiveRecord::SessionStore"かどうかを見て判断するため、継承したらダメなのですね。
手動で設定してあげるのが、簡単そうです。
# config/initializers/jpmobile_init.rb
require 'jpmobile'
MyApp::Application.config.jpmobile.mobile_filter
MyApp::Application.config.jpmobile.form_accept_charset_conversion = true
module Jpmobile::TransSid
require 'jpmobile/session/active_record_store'
ActionDispatch::Session::AbstractStore.send :include, ParamsOverCookie
end