Class: Rack::Session::Stack::Sequel

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

Constant Summary collapse

PARAMS =
{:dataset => nil}

Instance Method Summary collapse

Constructor Details

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

Returns a new instance of Sequel.



6
7
8
9
# File 'lib/rack-session-stack/sequel.rb', line 6

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

Instance Method Details

#[](sid) ⇒ Object



36
37
38
39
40
41
42
43
44
# File 'lib/rack-session-stack/sequel.rb', line 36

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

#[]=(sid, session) ⇒ Object



46
47
48
49
# File 'lib/rack-session-stack/sequel.rb', line 46

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

#create(sid, session) ⇒ Object



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

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

#delete(sid) ⇒ Object



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

def delete(sid)
  if data = @pool.filter('sid = ?', sid).first
    data.delete
  end
  super
end

#store(sid, session) ⇒ Object



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

def store(sid, session)
  @pool.filter('sid = ?', sid).update(
    :session => [Marshal.dump(session)].pack('m*'),
    :updated => Time.now.utc
  )
  session
end