Class: ActionDispatch::Flash

Inherits:
Object
  • Object
show all
Defined in:
lib/rails_4_session_flash_backport/rails2/flash_hash.rb,
lib/rails_4_session_flash_backport/rails4/flash_hash.rb,
lib/rails_4_session_flash_backport/rails3-0/flash_hash.rb,
lib/rails_4_session_flash_backport/rails3-1/flash_hash.rb

Defined Under Namespace

Classes: FlashHash

Constant Summary collapse

KEY =
'action_dispatch.request.flash_hash'.freeze

Instance Method Summary collapse

Instance Method Details

#call(env) ⇒ Object



58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/rails_4_session_flash_backport/rails3-0/flash_hash.rb', line 58

def call(env)
  @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.to_session_value
      new_hash = flash_hash.dup
    else
      new_hash = flash_hash
    end

    env[KEY] = new_hash
  end

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