Skip to content
Browse files

fix the Flash middleware loading the session on every request (very d…

…angerous especially with Rack::Cache), it should only be loaded when the flash method is called
  • Loading branch information...
1 parent 19d96a3 commit 26ab326c7c825ca71838432a4137605f95ecf478 @willbryant committed Jan 24, 2012
View
1 actionpack/lib/action_controller/test_case.rb
@@ -439,7 +439,6 @@ def process(action, parameters = nil, session = nil, flash = nil, http_method =
@request.session = ActionController::TestSession.new(session) if session
@request.session["flash"] = @request.flash.update(flash || {})
- @request.session["flash"].sweep
@controller.request = @request
build_request_uri(action, parameters)
View
9 actionpack/lib/action_dispatch/middleware/flash.rb
@@ -4,7 +4,7 @@ class Request
# read a notice you put there or <tt>flash["notice"] = "hello"</tt>
# to put a new one.
def flash
- @env[Flash::KEY] ||= (session["flash"] || Flash::FlashHash.new)
+ @env[Flash::KEY] ||= (session["flash"] || Flash::FlashHash.new).tap(&:sweep)
end
end
@@ -240,10 +240,6 @@ def initialize(app)
end
def call(env)
- if (session = env['rack.session']) && (flash = session['flash'])
- flash.sweep
- end
-
@app.call(env)
ensure
session = env['rack.session'] || {}
@@ -261,7 +257,8 @@ def call(env)
new_hash.close!
end
- if session.key?('flash') && session['flash'].empty?
+ if (!session.respond_to?(:loaded?) || session.loaded?) && # (reset_session uses {}, which doesn't implement #loaded?)
+ session.key?('flash') && session['flash'].empty?
session.delete('flash')
end
end

0 comments on commit 26ab326

Please sign in to comment.
Something went wrong with that request. Please try again.