module ActionDispatch::Flash::RequestMethods

def commit_flash # :nodoc:

:nodoc:
def commit_flash # :nodoc:
  session    = self.session || {}
  flash_hash = self.flash_hash
  if flash_hash && (flash_hash.present? || session.key?("flash"))
    session["flash"] = flash_hash.to_session_value
    self.flash = flash_hash.dup
  end
  if (!session.respond_to?(:loaded?) || session.loaded?) && # reset_session uses {}, which doesn't implement #loaded?
      session.key?("flash") && session["flash"].nil?
    session.delete("flash")
  end
end

def flash

to put a new one.
read a notice you put there or flash["notice"] = "hello"
Access the contents of the flash. Use flash["notice"] to
def flash
  flash = flash_hash
  return flash if flash
  self.flash = Flash::FlashHash.from_session_value(session["flash"])
end

def flash=(flash)

def flash=(flash)
  set_header Flash::KEY, flash
end

def flash_hash # :nodoc:

:nodoc:
def flash_hash # :nodoc:
  get_header Flash::KEY
end

def reset_session # :nodoc:

:nodoc:
def reset_session # :nodoc:
  super
  self.flash = nil
end