Sha256: 1c98c14e6bf6086a8810d3e9fc8407d1ec74672c682601434f476286fb90c4eb

Contents?: true

Size: 1.06 KB

Versions: 1

Compression:

Stored size: 1.06 KB

Contents

# make sure we're running inside Merb
if defined?(Merb::Plugins)

  # Merb gives you a Merb::Plugins.config hash...feel free to put your stuff in your piece of it
  Merb::Plugins.config[:merb_flash] = {}
  
  Merb::BootLoader.before_app_loads do
    class Merb::Request
      def message
        @_message ||= {}
      end

      def message=(msg)
        @_message = msg
      end
    end

    module Merb::RedirectWithSessionFlash
      def redirect(url, opts = {})
        if opts[:message]
          msg = opts.delete(:message)
          unless msg.is_a?(Hash)
            if msg.is_a?(String)
              msg = Mash.new(:notice => msg)
            else
              raise ArgumentError
            end
          end
          session[:flash] = msg
        end

        super
      end
    end

    class Merb::Controller
      override! :redirect
      include Merb::RedirectWithSessionFlash
      
      before :process_flash

      protected

      def process_flash
        request.message = session[:flash]
        session[:flash] = {}
      end
    end
    
  end
  
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
teamon-merb-flash-0.1.3 lib/merb-flash.rb