class ActionDispatch::Session::SequelStore

Constants

ENV_SESSION_OPTIONS_KEY
SESSION_RECORD_KEY

Public Class Methods

session_class() click to toggle source
# File lib/action_dispatch/middleware/session/sequel_store.rb, line 13
def self.session_class
  @@session_class ||= begin
    res = Class.new(Sequel::Model(:sessions))
    res.plugin :timestamps, :update_on_create => true
    res.plugin :serialization, :marshal, :data
    res
  end
end

Private Instance Methods

delete_session(req, sid, options) click to toggle source
# File lib/action_dispatch/middleware/session/sequel_store.rb, line 48
def delete_session(req, sid, options)
  with_silenced_logger do
    destroy_session(req.env, sid, options)
  end
end
destroy_session(env, sid, options) click to toggle source
# File lib/action_dispatch/middleware/session/sequel_store.rb, line 54
def destroy_session(env, sid, options)
  session = get_session_model(env, sid)
  session.destroy unless session.new?
  env[SESSION_RECORD_KEY] = nil
  generate_sid unless options[:drop]
end
find_session(req, sid) click to toggle source
# File lib/action_dispatch/middleware/session/sequel_store.rb, line 24
def find_session(req, sid)
  get_session(req.env, sid)
end
get_session(env, sid) click to toggle source
# File lib/action_dispatch/middleware/session/sequel_store.rb, line 28
def get_session(env, sid)
  with_silenced_logger do
    session = load_from_store(sid)
    env[SESSION_RECORD_KEY] = session
    [session.session_id, session.data]
  end
end
get_session_model(env, sid) click to toggle source
# File lib/action_dispatch/middleware/session/sequel_store.rb, line 61
def get_session_model(env, sid)
  with_silenced_logger do
    if env[ENV_SESSION_OPTIONS_KEY][:id].nil?
      env[SESSION_RECORD_KEY] = load_from_store(sid)
    else
      env[SESSION_RECORD_KEY] ||= load_from_store(sid)
    end
  end
end
load_from_store(sid) click to toggle source
# File lib/action_dispatch/middleware/session/sequel_store.rb, line 71
def load_from_store(sid)
  klass = self.class.session_class
  klass.where(:session_id => sid).first ||
    klass.new(:session_id => generate_sid, :data => {})
end
set_session(env, sid, session_data, options) click to toggle source
# File lib/action_dispatch/middleware/session/sequel_store.rb, line 42
def set_session(env, sid, session_data, options)
  session      = get_session_model(env, sid)
  session.data = session_data
  session.save(:raise_on_failure => false) && session.session_id
end
with_silenced_logger() { || ... } click to toggle source
# File lib/action_dispatch/middleware/session/sequel_store.rb, line 77
def with_silenced_logger
  Rails.application.config.sequel.logger.silence { yield }
end
write_session(req, sid, session_data, options) click to toggle source
# File lib/action_dispatch/middleware/session/sequel_store.rb, line 36
def write_session(req, sid, session_data, options)
  with_silenced_logger do
    set_session(req.env, sid, session_data, options)
  end
end