Class: ActionDispatch::Flash::FlashHash

Inherits:
Hash
  • 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

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(flashes = {}, discard = []) ⇒ FlashHash

:nodoc:



45
46
47
48
49
50
# File 'lib/rails_4_session_flash_backport/rails3-1/flash_hash.rb', line 45

def initialize(flashes = {}, discard = []) #:nodoc:
  @used    = Set.new(discard)
  @closed  = false
  @flashes = flashes
  @now     = nil
end

Class Method Details

._load(args) ⇒ Object



85
86
87
# File 'lib/rails_4_session_flash_backport/rails2/flash_hash.rb', line 85

def self._load(args)
  {}
end

.from_session_value(value) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/rails_4_session_flash_backport/rails4/flash_hash.rb', line 9

def self.from_session_value(value)
  flashes = discard = nil

  case value
  when ::ActionController::Flash::FlashHash # Rails 2.x
    flashes = Hash.new.update(value)
    discard = value.instance_variable_get(:@used).select{|a,b| b}.keys
  when ::ActionDispatch::Flash::FlashHash # Rails 3.1, 3.2
    flashes = value.instance_variable_get(:@flashes)
    discard = value.instance_variable_get(:@used)
  when Hash # Rails 4.0, we backported to 2.3 too
    flashes = value['flashes']
    discard = value['discard']
  end

  flashes ||= {}
  if discard
    flashes.except!(*discard)
  end

  new(flashes, flashes.keys)
end

Instance Method Details

#to_session_valueObject



32
33
34
35
36
# File 'lib/rails_4_session_flash_backport/rails4/flash_hash.rb', line 32

def to_session_value
  flashes_to_keep = @flashes.except(*@discard)
  return nil if flashes_to_keep.empty?
  {'discard' => @discard.to_a, 'flashes' => flashes_to_keep}
end