Class: Rack::Session::Stack::Memcache

Inherits:
Base
  • Object
show all
Defined in:
lib/rack-session-stack/memcache.rb

Constant Summary collapse

PARAMS =
{:server => 'localhost:11211'}

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(params = {}, fallback = nil) ⇒ Memcache

Returns a new instance of Memcache.



7
8
9
10
11
# File 'lib/rack-session-stack/memcache.rb', line 7

def initialize(params={}, fallback=nil)
  super
  @pool = ::MemCache.new(@params[:server], @params)
  raise 'No memcache servers' unless @pool.servers.any? { |s| s.alive? }
end

Instance Attribute Details

#poolObject (readonly)

Returns the value of attribute pool.



4
5
6
# File 'lib/rack-session-stack/memcache.rb', line 4

def pool
  @pool
end

Instance Method Details

#[](sid) ⇒ Object



27
28
29
30
31
32
33
# File 'lib/rack-session-stack/memcache.rb', line 27

def [](sid)
  @pool.fetch(sid) do
    super(sid)
  end
rescue
  super(sid)
end

#[]=(sid, session) ⇒ Object



35
36
37
38
39
# File 'lib/rack-session-stack/memcache.rb', line 35

def []=(sid, session)
  @pool.set(sid, session, 0)
ensure
  super
end

#create(sid, session) ⇒ Object



13
14
15
16
17
18
19
# File 'lib/rack-session-stack/memcache.rb', line 13

def create(sid, session)
  unless /^STORED/ =~ @pool.add(sid, session)
    raise "Session collision on '#{sid.inspect}'"
  end
ensure
  super
end

#delete(sid) ⇒ Object



21
22
23
24
25
# File 'lib/rack-session-stack/memcache.rb', line 21

def delete(sid)
  @pool.delete(sid)
ensure
  super
end