Module: ActionDispatch::Session::StaleSessionCheck

Included in:
AbstractStore, CookieStore, MemCacheStore
Defined in:
lib/action_dispatch/middleware/session/abstract_store.rb

Instance Method Summary collapse

Instance Method Details

#extract_session_id(env) ⇒ Object



52
53
54
# File 'lib/action_dispatch/middleware/session/abstract_store.rb', line 52

def extract_session_id(env)
  stale_session_check! { super }
end

#load_session(env) ⇒ Object



48
49
50
# File 'lib/action_dispatch/middleware/session/abstract_store.rb', line 48

def load_session(env)
  stale_session_check! { super }
end

#stale_session_check!Object



56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/action_dispatch/middleware/session/abstract_store.rb', line 56

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.\nRemember to require the classes for all objects kept in the session.\n(Original exception: #{const_error.message} [#{const_error.class}])\n"
    end
    retry
  elsif argument_error.message =~ %r{dump format error \(user class\)}
    # Error unmarshalling object from session.
    {}
  else
    raise
  end
end