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



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

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



61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/rack-datamapper-session.rb', line 61

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