class Egalite::SessionSequel
Public Class Methods
create_table(db, opts = {})
click to toggle source
# File lib/egalite/session.rb, line 39 def self.create_table(db, opts = {}) table = opts[:table_name] || :sessions db.create_table(table) { primary_key :id, :integer, :auto_increment => true column :mac, :varchar column :updated_at, :timestamp column :expire_sec, :integer # 任意項目: 個別に有効期限設定可能 } end
new(env, cookies, opts = {})
click to toggle source
Calls superclass method
Egalite::Session::new
# File lib/egalite/session.rb, line 58 def initialize(env, cookies, opts = {}) @db = env.db @table = opts[:tablename] || :sessions super(env, cookies, opts) end
Public Instance Methods
_load(_sstr)
click to toggle source
# File lib/egalite/session.rb, line 75 def _load(_sstr) return false unless _sstr and _sstr.size > 0 (sid,mac) = _sstr.split(/_/) sid = sid.to_i return false if sid <= 0 return false unless mac and mac.size > 0 rec = @db[@table][:id => sid] return false unless rec and rec[:mac] == mac # timeout check updated = rec[:updated_at] return false if Time.now > expire(updated) @sstr = _sstr @hash = rec @sid = sid @mac = mac @loaded = true @cookies[@cookie_name] = cookie @db[@table].filter(:id => sid).update(:updated_at => Time.now) true end
create(hash = nil)
click to toggle source
# File lib/egalite/session.rb, line 109 def create(hash = nil) @sid = @db[@table].insert({}) @mac = OpenSSL::Random.random_bytes(8).unpack('h*')[0] hash ||= {} @db[@table].filter(:id => @sid).update(hash.merge(:mac => @mac,:updated_at => Time.now)) @hash = @db[@table][:id => @sid] @sstr = "#@sid" + "_#@mac" @cookies[@cookie_name] = cookie @loaded = true true end
delete()
click to toggle source
# File lib/egalite/session.rb, line 122 def delete @cookies[@cookie_name] = { :value => nil, :expires => Time.now - 3600, :path => @path, :secure => @secure } @db[@table].filter(:id => @sid).delete @loaded = false true end
expire(t = nil)
click to toggle source
# File lib/egalite/session.rb, line 49 def expire(t = nil) t ||= Time.now if @individual_expire and @hash and @hash[:expire_sec] t + @hash[:expire_sec] else t + @expire_after end end
load()
click to toggle source
# File lib/egalite/session.rb, line 104 def load _sstr = @cookies[@cookie_name] _sstr = _sstr[0] if _sstr.is_a?(Array) _load(_sstr) end
load_from_param(_sstr)
click to toggle source
# File lib/egalite/session.rb, line 101 def load_from_param(_sstr) _load(_sstr) end
save()
click to toggle source
# File lib/egalite/session.rb, line 133 def save return false unless @loaded [:updated_at, :mac, :id].each { |s| @hash.delete(s) } @db[@table].filter(:id => @sid).update( {:updated_at => Time.now}.merge(@hash) ) true end
sstr()
click to toggle source
# File lib/egalite/session.rb, line 72 def sstr @sstr end