aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_dispatch/middleware
diff options
context:
space:
mode:
Diffstat (limited to 'actionpack/lib/action_dispatch/middleware')
-rw-r--r--actionpack/lib/action_dispatch/middleware/flash.rb27
1 files changed, 17 insertions, 10 deletions
diff --git a/actionpack/lib/action_dispatch/middleware/flash.rb b/actionpack/lib/action_dispatch/middleware/flash.rb
index 735c72d34a..2adbce031b 100644
--- a/actionpack/lib/action_dispatch/middleware/flash.rb
+++ b/actionpack/lib/action_dispatch/middleware/flash.rb
@@ -43,6 +43,8 @@ module ActionDispatch
KEY = 'action_dispatch.request.flash_hash'.freeze
class FlashNow #:nodoc:
+ attr_accessor :flash
+
def initialize(flash)
@flash = flash
end
@@ -66,10 +68,6 @@ module ActionDispatch
def notice=(message)
self[:notice] = message
end
-
- def close!(new_flash)
- @flash = new_flash
- end
end
class FlashHash
@@ -82,6 +80,14 @@ module ActionDispatch
@now = nil
end
+ def initialize_copy(other)
+ if other.now_is_loaded?
+ @now = other.now.dup
+ @now.flash = self
+ end
+ super
+ end
+
def []=(k, v) #:nodoc:
raise ClosedError, :flash if closed?
keep(k)
@@ -151,11 +157,7 @@ module ActionDispatch
attr_reader :closed
alias :closed? :closed
-
- def close!
- @closed = true
- @now.close!(self) if @now
- end
+ def close!; @closed = true; end
# Keeps either the entire current flash or a specific flash entry available for the next action:
#
@@ -210,7 +212,12 @@ module ActionDispatch
self[:notice] = message
end
- private
+ protected
+
+ def now_is_loaded?
+ !!@now
+ end
+
# Used internally by the <tt>keep</tt> and <tt>discard</tt> methods
# use() # marks the entire flash as used
# use('msg') # marks the "msg" entry as used