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

Use initialize_copy! to proper initialize now on clone.

This commit is contained in:
José Valim 2011-04-19 22:38:51 +02:00
parent 89ed9fbd19
commit 2f549b8bbd

View file

@ -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,14 +68,6 @@ module ActionDispatch
def notice=(message)
self[:notice] = message
end
def close!(new_flash)
@flash = new_flash
end
def closed?
@flash.closed?
end
end
class FlashHash
@ -86,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)
@ -150,16 +152,12 @@ module ActionDispatch
#
# Entries set via <tt>now</tt> are accessed the same way as standard entries: <tt>flash['my-key']</tt>.
def now
@now = (!@now || @now.closed?) ? FlashNow.new(self) : @now
@now ||= FlashNow.new(self)
end
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:
#
@ -214,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