Class: Rack::Session::DataMapper

Inherits:
Abstract::ID
  • Object
show all
Defined in:
lib/rack-datamapper-session.rb

Instance Method Summary collapse

Instance Method Details

#get_session(env, sid) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/rack-datamapper-session.rb', line 30

def get_session(env, sid)
  session = DataMapperSession.first(:sid => sid) if sid

  unless sid and session
    env['rack.errors'].puts("Session '#{sid.inspect}' not found, initializing...") if $VERBOSE and not sid.nil?
    sid = generate_sid
    session = DataMapperSession.new(:sid => sid)
    raise 'Unable to store session' unless session.save
  end

  # !!! check expiry
  return [sid, session]
end

#set_session(env, sid, new_session, options) ⇒ Object



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/rack-datamapper-session.rb', line 44

def set_session(env, sid, new_session, options)
  expiry = options[:expire_after]
  expiry = expiry.nil? ? 0 : expiry + 1

  session = DataMapperSession.first(:sid => sid) if sid

  if options[:renew] or options[:drop]
    session.destroy
    return false if options[:drop]
    sid = generate_sid
    session = DataMapperSession.new(:sid => sid)
  end
  
  session.data = new_session.data
  raise 'Unable to update session' unless session.save

  return sid
end