1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

don't hold a reference to env in the options object

I want to decouple Rails from the rack ENV as much as possible.  We
should try to keep as few references to the env as possible
This commit is contained in:
Aaron Patterson 2015-06-13 14:12:44 -07:00
parent def14505b7
commit 3692ca5ce7

View file

@ -17,7 +17,7 @@ module ActionDispatch
session.merge! session_was if session_was
set(env, session)
Options.set(env, Request::Session::Options.new(store, env, default_options))
Options.set(env, Request::Session::Options.new(store, default_options))
session
end
@ -38,20 +38,19 @@ module ActionDispatch
env[ENV_SESSION_OPTIONS_KEY]
end
def initialize(by, env, default_options)
def initialize(by, default_options)
@by = by
@env = env
@delegate = default_options.dup
end
def [](key)
if key == :id
@delegate.fetch(key) {
@delegate[:id] = @by.send(:extract_session_id, @env)
}
else
@delegate[key]
end
@delegate[key]
end
def id(env)
@delegate.fetch(:id) {
@by.send(:extract_session_id, env)
}
end
def []=(k,v); @delegate[k] = v; end
@ -68,7 +67,7 @@ module ActionDispatch
end
def id
options[:id]
options.id(@env)
end
def options
@ -78,8 +77,7 @@ module ActionDispatch
def destroy
clear
options = self.options || {}
new_sid = @by.send(:destroy_session, @env, options[:id], options)
options[:id] = new_sid # Reset session id with a new value or nil
@by.send(:destroy_session, @env, options.id(@env), options)
# Load the new sid to be written with the response
@loaded = false