Skip to content

Commit

Permalink
Merge branch 'jkowens-rails5'
Browse files Browse the repository at this point in the history
  • Loading branch information
JonathanTron committed Aug 11, 2016
2 parents 5c88244 + 03a1b4a commit 8b26f90
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 18 deletions.
39 changes: 23 additions & 16 deletions lib/action_dispatch/middleware/session/sequel_store.rb
Original file line number Diff line number Diff line change
Expand Up @@ -21,42 +21,49 @@ def self.session_class

private

def find_session(req, sid)
get_session(req.env, sid)
end

def get_session(env, sid)
sid ||= generate_sid
session = find_session(sid)
session = load_from_store(sid)
env[SESSION_RECORD_KEY] = session
[sid, session.data]
[session.session_id, session.data]
end

def write_session(req, sid, session_data, options)
set_session(req.env, sid, session_data, options)
end

def set_session(env, sid, session_data, _options)
def set_session(env, sid, session_data, options)
session = get_session_model(env, sid)
session.data = session_data
session.save(:raise_on_failure => false) && sid
session.save(:raise_on_failure => false) && session.session_id
end

def destroy_session(env, sid, options)
sid = current_session_id(env)
if sid
session = get_session_model(env, sid)
session.destroy unless session.new?
env[SESSION_RECORD_KEY] = nil
end
def delete_session(req, sid, options)
destroy_session(req.env, sid, options)
end

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

def get_session_model(env, sid)
if env[ENV_SESSION_OPTIONS_KEY][:id].nil?
env[SESSION_RECORD_KEY] = find_session(sid)
env[SESSION_RECORD_KEY] = load_from_store(sid)
else
env[SESSION_RECORD_KEY] ||= find_session(sid)
env[SESSION_RECORD_KEY] ||= load_from_store(sid)
end
end

def find_session(sid)
def load_from_store(sid)
klass = self.class.session_class
klass.where(:session_id => sid).first ||
klass.new(:session_id => sid, :data => {})
klass.new(:session_id => generate_sid, :data => {})
end
end
end
Expand Down
4 changes: 2 additions & 2 deletions spec/internal/app/controllers/sessions_controller.rb
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
class SessionsController < ApplicationController
def create
session[:status] = params[:status]
head :status => 200
head :ok
end

def destroy
reset_session
head :status => 200
head :ok
end
end

0 comments on commit 8b26f90

Please sign in to comment.