Skip to content

Commit

Permalink
remove more nils
Browse files Browse the repository at this point in the history
  • Loading branch information
tenderlove committed Aug 13, 2019
1 parent 9c30c8d commit a4f30d2
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 7 deletions.
11 changes: 6 additions & 5 deletions lib/rack/session/abstract/id.rb
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ module Session

class NullSessionId
def empty?; true; end
def nil?; true; end
end

module Abstract
Expand Down Expand Up @@ -49,7 +50,7 @@ def id
else
@id = @store.send(:extract_session_id, @req)
end
@id || NullSessionId.new
@id || raise
end

def options
Expand Down Expand Up @@ -95,7 +96,7 @@ def clear

def destroy
clear
@id = @store.send(:delete_session, @req, id, options)
@id = @store.send(:delete_session, @req, id, options) || raise
end

def to_hash
Expand Down Expand Up @@ -287,15 +288,15 @@ def prepare_session(req)
def load_session(req)
sid = current_session_id(req)
sid, session = find_session(req, sid)
[sid, session || {}]
[sid || NullSessionId.new, session || {}]
end

# Extract session id from request object.

def extract_session_id(request)
sid = request.cookies[@key]
sid ||= request.params[@key] unless @cookie_only
sid
sid || NullSessionId.new
end

# Returns the current session id from the SessionHash.
Expand Down Expand Up @@ -351,7 +352,7 @@ def commit_session(req, res)

if options[:drop] || options[:renew]
session_id = delete_session(req, session.id || generate_sid, options)
return unless session_id
return if session_id.nil?
end

return unless commit_session?(req, session, options)
Expand Down
6 changes: 5 additions & 1 deletion lib/rack/session/cookie.rb
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,11 @@ def write_session(req, session_id, session, options)

def delete_session(req, session_id, options)
# Nothing to do here, data is in the client
generate_sid unless options[:drop]
if options[:drop]
NullSessionId.new
else
generate_sid
end
end

def digest_match?(data, digest)
Expand Down
6 changes: 5 additions & 1 deletion lib/rack/session/pool.rb
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,11 @@ def write_session(req, session_id, new_session, options)
def delete_session(req, session_id, options)
with_lock(req) do
@pool.delete(session_id)
generate_sid unless options[:drop]
if options[:drop]
NullSessionId.new
else
generate_sid
end
end
end

Expand Down

0 comments on commit a4f30d2

Please sign in to comment.