module Flame::Flash

Module for Flame::Flash extension with helper methods and base class

Public Instance Methods

execute(method) click to toggle source

After hook

Calls superclass method
# File lib/flame/flash.rb, line 7
def execute(method)
        super
        record_flashes
end
halt(*args) click to toggle source

Capture halt method

Calls superclass method
# File lib/flame/flash.rb, line 28
def halt(*args)
        record_flashes
        super
end
redirect(*args) click to toggle source

Upgrade redirect method @example Redirect to show method of Articles controller with error

redirect ArticlesController, :show, id: 2, error: 'Access required'
Calls superclass method
# File lib/flame/flash.rb, line 15
def redirect(*args)
        if args.last.is_a? Hash
                if args[0].is_a? String
                        flashes = args.pop
                else
                        args[-1], flashes = extract_flashes(args)
                end
                flash.merge(flashes)
        end
        super
end

Private Instance Methods

extract_flashes(args) click to toggle source

Split Hash-argument to parameters and flashes

# File lib/flame/flash.rb, line 45
def extract_flashes(args)
        add_controller_class(args)
        parameters = args[0].instance_method(args[1]).parameters.map(&:last)
        args.last.partition do |key, _value|
                parameters.include?(key) || key == :params
        end.map(&:to_h)
end
flash(key = nil) click to toggle source

Main helper method

# File lib/flame/flash.rb, line 36
def flash(key = nil)
        (
                @flash ||= FlashArray.new(
                        (session ? session[:flash] : [])
                )
        ).scope(key)
end
record_flashes() click to toggle source

Move flash.next to session

# File lib/flame/flash.rb, line 54
def record_flashes
        session[:flash] = flash.next
end