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.



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

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.



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

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.



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

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.



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

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

#before_saveObject



103
104
105
106
# File 'lib/merb/session/sequel_session.rb', line 103

def before_save 
  super
  prepare_data_to_save
end

#dataObject

Lazy-unserialize session state.



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

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

#data=(hsh) ⇒ Object

Virtual attribute writer - override.



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

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

#loaded?Boolean

Has the session been loaded yet?

Returns:

  • (Boolean)


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

def loaded?
  !!@data
end