Class: Rack::Session::Stack
- Inherits:
-
Abstract::ID
- Object
- Abstract::ID
- Rack::Session::Stack
show all
- Defined in:
- lib/rack-session-stack.rb
Defined Under Namespace
Modules: RAWS
Classes: Base, Memcache, Sequel
Constant Summary
collapse
- DEFAULT_OPTIONS =
Abstract::ID::DEFAULT_OPTIONS.merge(:stack => nil)
Instance Method Summary
collapse
Constructor Details
#initialize(app, options = {}) ⇒ Stack
Returns a new instance of Stack.
9
10
11
12
|
# File 'lib/rack-session-stack.rb', line 9
def initialize(app, options={})
super
@stack = @default_options[:stack]
end
|
Instance Method Details
#generate_sid ⇒ Object
14
15
16
|
# File 'lib/rack-session-stack.rb', line 14
def generate_sid
UUIDTools::UUID.random_create.to_s
end
|
#get_session(env, sid) ⇒ Object
18
19
20
21
22
23
24
25
26
|
# File 'lib/rack-session-stack.rb', line 18
def get_session(env, sid)
unless sid && session = @stack[sid]
@stack.create(sid = generate_sid, session = {})
end
session.instance_variable_set('@old', {}.merge(session))
return [sid, session]
end
|
#set_session(env, sid, session, options) ⇒ Object
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
# File 'lib/rack-session-stack.rb', line 28
def set_session(env, sid, session, options)
if options[:drop]
@stack.delete(sid)
return nil
end
if options[:renew]
@stack.delete(sid)
@stack.create(sid = generate_sid, session)
else
old = session.instance_variable_get('@old') || {}
@stack[sid] = session if session != old
end
return sid
end
|