class Rack::Flash

Public Class Methods

fake_session() click to toggle source
# File lib/rack/flash/test.rb, line 3
def self.fake_session
  @fake_session ||= {}
end
new(app, opts={}) click to toggle source

  • Rack Middleware implementation

# File lib/rack/flash.rb, line 107
def initialize(app, opts={})
  if klass = app_class(app, opts)
    klass.class_eval do
      def flash; env['x-rack.flash'] end
    end
  end

  @app, @opts = app, opts
end

Public Instance Methods

call(env) click to toggle source
# File lib/rack/flash.rb, line 117
def call(env)
  env['x-rack.flash'] ||= Rack::Flash::FlashHash.new(env['rack.session'], @opts)

  if @opts[:sweep]
    env['x-rack.flash'].flag!
  end

  res = @app.call(env)

  if @opts[:sweep]
    env['x-rack.flash'].sweep!
  end

  res
end
Also aliased as: old_call
flash() click to toggle source
# File lib/rack/flash.rb, line 110
def flash; env['x-rack.flash'] end
new_call(env) click to toggle source
# File lib/rack/flash/test.rb, line 8
def new_call(env)
  env['rack.session'] ||= Rack::Flash.fake_session
  old_call(env)
end
Also aliased as: call
old_call(env)
Alias for: call

Private Instance Methods

app_class(app, opts) click to toggle source
# File lib/rack/flash.rb, line 135
def app_class(app, opts)
  return nil if opts.has_key?(:helper) and not opts[:helper]
  opts[:flash_app_class] ||
    defined?(Sinatra::Base) && Sinatra::Base
end