--- /dev/null
+module SessionPersistence
+ private
+
+ # Override this method if you don't want to use session[:_remember_for].
+ def session_persistence_key
+ :_remember_for
+ end
+
+ # Persist the session.
+ #
+ # session_expires_after 1.hour
+ # session_expires_after 2.weeks
+ def session_expires_after(seconds)
+ session[session_persistence_key] = seconds
+ end
+
+ # Expire the session.
+ def session_expires_automatically
+ session.delete(session_persistence_key)
+ end
+ alias_method :expire_session, :session_expires_automatically
+
+ def _persist_session
+ if session[session_persistence_key]
+ env["rack.session.options"][:expire_after] = session[session_persistence_key]
+ end
+ end
+end