class ActionDispatch::Flash

def call(env)

def call(env)
  if (session = env['rack.session']) && (flash = session['flash'])
    flash.sweep
  end
  @app.call(env)
ensure
  session    = env['rack.session'] || {}
  flash_hash = env['action_dispatch.request.flash_hash']
  if flash_hash && (!flash_hash.empty? || session.key?('flash'))
    session["flash"] = flash_hash
  end
  if session.key?('flash') && session['flash'].empty?
    session.delete('flash')
  end
end