Class: Mentawai::Session::RackSession

Inherits:
Object
  • Object
show all
Defined in:
lib/mentawai/session/rack_session.rb

Overview

Rack::Session::Pool provides simple cookie based session management. Session data is stored in a hash held by @pool. The corresponding session key sent to the client. The pool is unmonitored and unregulated, which means that over prolonged use the session pool will be very large.

Example:

use Rack::Session::Pool, :key => 'rack.session',
                         :domain => 'foo.com',
                         :path => '/',
                         :expire_after => 2592000

All parameters are optional.

Direct Known Subclasses

MentaSession

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(app, options = {}) ⇒ RackSession

Returns a new instance of RackSession.



27
28
29
30
31
32
33
34
35
36
# File 'lib/mentawai/session/rack_session.rb', line 27

def initialize(app, options={})
  @app = app
  @key = options[:key] || "rack.session"
  @default_options = {:domain => nil,
    :path => "/",
    :expire_after => nil}.merge(options)
  @pool = Hash.new
  @default_context = context app, &nil
  @lock = Mutex.new
end

Instance Attribute Details

#keyObject (readonly)

Returns the value of attribute key.



25
26
27
# File 'lib/mentawai/session/rack_session.rb', line 25

def key
  @key
end

#poolObject (readonly)

Returns the value of attribute pool.



25
26
27
# File 'lib/mentawai/session/rack_session.rb', line 25

def pool
  @pool
end

Instance Method Details

#call(env) ⇒ Object



39
40
41
# File 'lib/mentawai/session/rack_session.rb', line 39

def call(env)
  @default_context.call(env)
end

#context(app, &block) ⇒ Object



43
44
45
46
47
48
49
50
51
# File 'lib/mentawai/session/rack_session.rb', line 43

def context(app, &block)
  Rack::Utils::Context.new self, app do |env|
    load_session env
    block[env] if block
    response = app.call(env)
    commit_session env, response
    response
  end
end