Skip to content

Commit

Permalink
define defalut value to session.data
Browse files Browse the repository at this point in the history
  • Loading branch information
authorNari committed Jan 17, 2011
1 parent 6329847 commit d993a94
Showing 1 changed file with 32 additions and 12 deletions.
44 changes: 32 additions & 12 deletions lib/sequel-rails/session_store.rb
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -15,30 +15,50 @@ class Session < ::Sequel::Model
# property :updated_at, DateTime, :required => false, :index => true # property :updated_at, DateTime, :required => false, :index => true


class << self class << self

def auto_migrate! def auto_migrate!
self.db.create_table :sessions do self.db.create_table :sessions do
primary_key :id primary_key :id
column :session_id, String, column :session_id, String,
:null => false, :null => false,
:unique => true, :unique => true,
:index => true :index => true


column :data, :text, column :data, :text,
:null => false :null => false

column :updated_at, DateTime, column :updated_at, DateTime,
:null => true, :null => true,
:index => true :index => true
end end
end end


def marshal(data)
ActiveSupport::Base64.encode64(Marshal.dump(data)) if data
end

def unmarshal(data)
Marshal.load(ActiveSupport::Base64.decode64(data)) if data
end
end end


def self.name def self.name
'session' 'session'
end end


def data
self[:data] ||= self.class.unmarshal(self[:data]) || {}
end

def marshal_data!
return false unless self[:data]
self[:data] = self.class.marshal(data)
end

def before_save
marshal_data!
super
end
end end


SESSION_RECORD_KEY = 'rack.session.record'.freeze SESSION_RECORD_KEY = 'rack.session.record'.freeze
Expand All @@ -58,7 +78,7 @@ def get_session(env, sid)
def set_session(env, sid, session_data) def set_session(env, sid, session_data)
session = get_session_resource(env, sid) session = get_session_resource(env, sid)
session.data = session_data session.data = session_data
session.updated_at = Time.now if session.dirty? session.updated_at = Time.now if session.modified?
session.save session.save
end end


Expand All @@ -72,7 +92,7 @@ def get_session_resource(env, sid)


def find_session(sid) def find_session(sid)
klass = self.class.session_class klass = self.class.session_class

klass.where(:session_id => sid).first || klass.new(:session_id => sid) klass.where(:session_id => sid).first || klass.new(:session_id => sid)
end end


Expand Down

0 comments on commit d993a94

Please sign in to comment.