個別に実装する必要があると思ってコードを書いてしまったが
下記でOKみたい。
設定
#config/initializers/session_store.rb
ActionController::Base.session = { :expire_after => 1.hour,
もしくは
#config/environment.rb
ActionController::Base.session_options[:expire_after] = 1.hour
railsのソース
この辺り?Rack::Utils.set_cookie_headerに渡している。
#gems/actionpack-2.3.11/lib/action_controller/session/abstract_store.rb
if (request_cookies.nil? || request_cookies[@key] != sid) || options[:expire_after] cookie = {:value => sid} Rack::Utils.set_cookie_header!(response[1], @key, cookie.merge(options)) end
うっかり書いてしまったソース
#app/controllers/application_controller.rb
SESSION_EXPIRE_SECONDS = 60 * 60 before_filter :check_session def error_session render :text => 'session error', :layout => false end private def check_session if enable_session? update_session else reset_session error_session end end def enable_session? return true unless session[:last_at] (Time.now - session[:last_at]) <= SESSION_EXPIRE_SECONDS end def update_session session[:last_at] = Time.now end