Method: ActionDispatch::Flash#call

Defined in:
lib/action_dispatch/middleware/flash.rb

#call(env) ⇒ Object



237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
# File 'lib/action_dispatch/middleware/flash.rb', line 237

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[KEY]

  if flash_hash
    if !flash_hash.empty? || session.key?('flash')
      session["flash"] = flash_hash
      new_hash = flash_hash.dup
    else
      new_hash = flash_hash
    end

    env[KEY] = new_hash
  end

  if session.key?('flash') && session['flash'].empty?
    session.delete('flash')
  end
end