Class: Rack::Session::Stack::RAWS::SDB

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

Constant Summary collapse

PARAMS =
{:domain => nil}

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

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

Returns a new instance of SDB.



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

def initialize(params={}, fallback=nil)
  super
  @pool = ::RAWS::SDB[@params[:domain]]
end

Instance Attribute Details

#poolObject (readonly)

Returns the value of attribute pool.



5
6
7
# File 'lib/rack-session-stack/raws/sdb.rb', line 5

def pool
  @pool
end

Instance Method Details

#[](sid) ⇒ Object



46
47
48
49
50
51
52
53
54
# File 'lib/rack-session-stack/raws/sdb.rb', line 46

def [](sid)
  if data = @pool.get(sid)
    Marshal.load(data['session'].unpack("m*").first)
  else
    if data = super
      create(sid, data)
    end
  end
end

#[]=(sid, session) ⇒ Object



56
57
58
59
# File 'lib/rack-session-stack/raws/sdb.rb', line 56

def []=(sid, session)
  store(sid, session)
  super
end

#create(sid, session) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/rack-session-stack/raws/sdb.rb', line 13

def create(sid, session)
  @pool.put(
    sid,
    {
      'session' => [Marshal.dump(session)].pack('m*'),
      'created' => Time.now.utc.iso8601,
      'updated' => Time.now.utc.iso8601
    },
    'session',
    'created',
    'updated'
  )
  super
end

#delete(sid) ⇒ Object



28
29
30
31
# File 'lib/rack-session-stack/raws/sdb.rb', line 28

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

#store(sid, session) ⇒ Object



33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/rack-session-stack/raws/sdb.rb', line 33

def store(sid, session)
  @pool.put(
    sid,
    {
      'session' => [Marshal.dump(session)].pack('m*'),
      'updated' => Time.now.utc.iso8601
    },
    'session',
    'updated'
  )
  session
end