Class: Merb::SequelSessionStore

Inherits:
Object
  • Object
show all
Defined in:
lib/merb/session/sequel_session.rb

Overview

Sessions stored in Sequel model.

To use Sequel based sessions add the following to config/init.rb:

Merb::Config = ‘sequel’

Class Method Summary collapse

Class Method Details

.delete_session(session_id) ⇒ Object

Parameters

session_id<String>

ID of the session to delete.



76
77
78
79
80
# File 'lib/merb/session/sequel_session.rb', line 76

def delete_session(session_id)
  if item = find(:session_id => session_id)
    item.delete
  end
end

.retrieve_session(session_id) ⇒ Object

Parameters

session_id<String>

ID of the session to retrieve.

Returns

ContainerSession

The session corresponding to the ID.



49
50
51
52
53
# File 'lib/merb/session/sequel_session.rb', line 49

def retrieve_session(session_id)
  if item = find(:session_id => session_id)
    Marshal.load(item.data.unpack('m').first)
  end
end

.store_session(session_id, session_data) ⇒ Object

Parameters

session_id<String>

ID of the session to set.

data<ContainerSession>

The session to set.



58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/merb/session/sequel_session.rb', line 58

def store_session(session_id, session_data)
  session_data = session_data.empty? ? nil : [Marshal.dump(session_data)].pack('m')
  begin
    if item = self.find(:session_id => session_id)
      item.update(:data => session_data)
    else
      item = self.new(:session_id => session_id,
                      :data => session_data,
                      :created_at => Time.now)
      item.save
    end
  rescue => e
    Merb.logger.error("#{e.message} when trying to save #{session_data}")
  end
end