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:
parent
def14505b7
commit
3692ca5ce7
1 changed files with 11 additions and 13 deletions
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue