Class: TestSessionManager::Middleware

Inherits:
Object
  • Object
show all
Defined in:
lib/test_session_manager/middleware.rb

Instance Method Summary collapse

Constructor Details

#initialize(app, manager) ⇒ Middleware

Returns a new instance of Middleware.



5
6
7
8
# File 'lib/test_session_manager/middleware.rb', line 5

def initialize(app, manager)
  @app = app
  @manager = manager
end

Instance Method Details

#call(env) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/test_session_manager/middleware.rb', line 10

def call(env)
  session = env['rack.session']

  if @manager.flash.any?
    flash = flash_from_session(session['flash'])
    flash.update(@manager.flash)
    session['flash'] = flash.to_session_value
  end

  @manager.session.each do |key, value|
    session[key] = value
  end

  @manager.reset!

  @app.call(env)
end

#flash_from_session(value) ⇒ Object



28
29
30
31
32
33
34
# File 'lib/test_session_manager/middleware.rb', line 28

def flash_from_session(value)
  if value.is_a?(Hash)
    ActionDispatch::Flash::FlashHash.new(value['flashes'], value['discard'] || [])
  else
    ActionDispatch::Flash::FlashHash.new
  end
end