Object
# File lib/action_dispatch/middleware/session/abstract_store.rb, line 139 139: def initialize(app, options = {}) 140: @app = app 141: @default_options = DEFAULT_OPTIONS.merge(options) 142: @key = @default_options.delete(:key).freeze 143: @cookie_only = @default_options.delete(:cookie_only) 144: ensure_session_key! 145: end
# File lib/action_dispatch/middleware/session/abstract_store.rb, line 147 147: def call(env) 148: prepare!(env) 149: response = @app.call(env) 150: 151: session_data = env[ENV_SESSION_KEY] 152: options = env[ENV_SESSION_OPTIONS_KEY] 153: 154: if !session_data.is_a?(AbstractStore::SessionHash) || session_data.loaded? || options[:expire_after] 155: session_data.send(:load!) if session_data.is_a?(AbstractStore::SessionHash) && !session_data.loaded? 156: 157: sid = options[:id] || generate_sid 158: session_data = session_data.to_hash 159: 160: value = set_session(env, sid, session_data) 161: return response unless value 162: 163: cookie = { :value => value } 164: unless options[:expire_after].nil? 165: cookie[:expires] = Time.now + options.delete(:expire_after) 166: end 167: 168: request = ActionDispatch::Request.new(env) 169: set_cookie(request, cookie.merge!(options)) 170: end 171: 172: response 173: end
# File lib/action_dispatch/middleware/session/abstract_store.rb, line 209 209: def current_session_id(env) 210: env[ENV_SESSION_OPTIONS_KEY][:id] 211: end
# File lib/action_dispatch/middleware/session/abstract_store.rb, line 251 251: def destroy(env) 252: raise '#destroy needs to be implemented.' 253: end
# File lib/action_dispatch/middleware/session/abstract_store.rb, line 213 213: def ensure_session_key! 214: if @key.blank? 215: raise ArgumentError, 'A key is required to write a ' + 216: 'cookie containing the session data. Use ' + 217: 'config.session_store SESSION_STORE, { :key => ' + 218: '"_myapp_session" } in config/application.rb' 219: end 220: end
# File lib/action_dispatch/middleware/session/abstract_store.rb, line 238 238: def exists?(env) 239: current_session_id(env).present? 240: end
# File lib/action_dispatch/middleware/session/abstract_store.rb, line 200 200: def extract_session_id(env) 201: stale_session_check! do 202: request = ActionDispatch::Request.new(env) 203: sid = request.cookies[@key] 204: sid ||= request.params[@key] unless @cookie_only 205: sid 206: end 207: end
# File lib/action_dispatch/middleware/session/abstract_store.rb, line 182 182: def generate_sid 183: ActiveSupport::SecureRandom.hex(16) 184: end
# File lib/action_dispatch/middleware/session/abstract_store.rb, line 242 242: def get_session(env, sid) 243: raise '#get_session needs to be implemented.' 244: end
# File lib/action_dispatch/middleware/session/abstract_store.rb, line 192 192: def load_session(env) 193: stale_session_check! do 194: sid = current_session_id(env) 195: sid, session = get_session(env, sid) 196: [sid, session] 197: end 198: end
# File lib/action_dispatch/middleware/session/abstract_store.rb, line 177 177: def prepare!(env) 178: env[ENV_SESSION_KEY] = SessionHash.new(self, env) 179: env[ENV_SESSION_OPTIONS_KEY] = OptionsHash.new(self, env, @default_options) 180: end
# File lib/action_dispatch/middleware/session/abstract_store.rb, line 246 246: def set_session(env, sid, session_data) 247: raise '#set_session needs to be implemented and should return ' << 248: 'the value to be stored in the cookie (usually the sid)' 249: end
# File lib/action_dispatch/middleware/session/abstract_store.rb, line 222 222: def stale_session_check! 223: yield 224: rescue ArgumentError => argument_error 225: if argument_error.message =~ %{undefined class/module ([\w:]*\w)} 226: begin 227: # Note that the regexp does not allow $1 to end with a ':' 228: $1.constantize 229: rescue LoadError, NameError => const_error 230: 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" 231: end 232: retry 233: else 234: raise 235: end 236: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.