module ActionDispatch::Session::StaleSessionCheck
def extract_session_id(env)
def extract_session_id(env) stale_session_check! { super } end
def load_session(env)
def load_session(env) stale_session_check! { super } end
def stale_session_check!
def stale_session_check! yield rescue ArgumentError => argument_error if argument_error.message =~ %r{undefined class/module ([\w:]*\w)} begin # Note that the regexp does not allow $1 to end with a ':' $1.constantize rescue LoadError, NameError => const_error raise ActionDispatch::Session::SessionRestoreError, "Session contains objects whose class definition isn't available.\n" + "Remember to require the classes for all objects kept in the session.\n" + "(Original exception: #{const_error.message} [#{const_error.class}])\n" end retry else raise end end