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

Instance Method Summary collapse

Class Method Details

.data_column_size_limitObject

Returns

Integer

The maximum length of the ‘data’ column.



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

def data_column_size_limit
  512 # TODO - figure out how much space we actually have
end

.delete_session(session_id) ⇒ Object

Parameters

session_id<String>

ID of the session to delete.



70
71
72
73
74
# File 'lib/merb/session/sequel_session.rb', line 70

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.



51
52
53
54
55
# File 'lib/merb/session/sequel_session.rb', line 51

def retrieve_session(session_id)
  if item = find(:session_id => session_id)
    item.data
  end
end

.store_session(session_id, data) ⇒ Object

Parameters

session_id<String>

ID of the session to set.

data<ContainerSession>

The session to set.



60
61
62
63
64
65
66
# File 'lib/merb/session/sequel_session.rb', line 60

def store_session(session_id, data)
  if item = find(:session_id => session_id)
    item.update(:data => data)
  else
    create(:session_id => session_id, :data => data, :created_at => Time.now)
  end
end

Instance Method Details

#dataObject

Lazy-unserialize session state.



87
88
89
# File 'lib/merb/session/sequel_session.rb', line 87

def data
  @data ||= (@values[:data] ? Marshal.load(@values[:data]) : {})
end

#data=(hsh) ⇒ Object

Virtual attribute writer - override.



92
93
94
# File 'lib/merb/session/sequel_session.rb', line 92

def data=(hsh)
  @data = hsh if hsh.is_a?(Hash)
end

#loaded?Boolean

Has the session been loaded yet?

Returns:

  • (Boolean)


97
98
99
# File 'lib/merb/session/sequel_session.rb', line 97

def loaded?
  !!@data
end