Parent

Class Index [+]

Quicksearch

Rack::Session::Pool

Rack::Session::Pool provides simple cookie based session management. Session data is stored in a hash held by @pool. In the context of a multithreaded environment, sessions being committed to the pool is done in a merging manner.

The :drop option is available in rack.session.options if you wish to explicitly remove the session from the session cache.

Example:

  myapp = MyRackApp.new
  sessioned = Rack::Session::Pool.new(myapp,
    :domain => 'foo.com',
    :expire_after => 2592000
  )
  Rack::Handler::WEBrick.run sessioned

Constants

DEFAULT_OPTIONS

Attributes

mutex[R]
pool[R]

Public Class Methods

new(app, options={}) click to toggle source
    # File lib/rack/session/pool.rb, line 31
31:       def initialize(app, options={})
32:         super
33:         @pool = Hash.new
34:         @mutex = Mutex.new
35:       end

Public Instance Methods

destroy_session(env, session_id, options) click to toggle source
    # File lib/rack/session/pool.rb, line 61
61:       def destroy_session(env, session_id, options)
62:         with_lock(env) do
63:           @pool.delete(session_id)
64:           generate_sid unless options[:drop]
65:         end
66:       end
generate_sid() click to toggle source
    # File lib/rack/session/pool.rb, line 37
37:       def generate_sid
38:         loop do
39:           sid = super
40:           break sid unless @pool.key? sid
41:         end
42:       end
get_session(env, sid) click to toggle source
    # File lib/rack/session/pool.rb, line 44
44:       def get_session(env, sid)
45:         with_lock(env, [nil, {}]) do
46:           unless sid and session = @pool[sid]
47:             sid, session = generate_sid, {}
48:             @pool.store sid, session
49:           end
50:           [sid, session]
51:         end
52:       end
set_session(env, session_id, new_session, options) click to toggle source
    # File lib/rack/session/pool.rb, line 54
54:       def set_session(env, session_id, new_session, options)
55:         with_lock(env, false) do
56:           @pool.store session_id, new_session
57:           session_id
58:         end
59:       end
with_lock(env, default=nil) click to toggle source
    # File lib/rack/session/pool.rb, line 68
68:       def with_lock(env, default=nil)
69:         @mutex.lock if env['rack.multithread']
70:         yield
71:       rescue
72:         default
73:       ensure
74:         @mutex.unlock if @mutex.locked?
75:       end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.