Sha256: 6b1f6b624336846d641b5d59c52553a8bf4618c671af08246673ad4c3a990570

Contents?: true

Size: 624 Bytes

Versions: 6

Compression:

Stored size: 624 Bytes

Contents

module PowerShop
  module Middleware
    # Public: class find shopping cart from session for existing user
    # or create new shopping cart in session
    class ShoppingCart
      def initialize(app)
        @app = app
      end

      def call(env)
        unless env['PATH_INFO'] =~ %r{^/assets/}
          env['shopping_cart'] ||= get_or_crete_cart(env['rack.session'])
        end

        @app.call(env)
      end

      def get_or_crete_cart(session)
        cart = ::ShoppingCart.find_or_create_by_id(session[:shopping_cart_id])
        session[:shopping_cart_id] = cart.id

        cart
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
power_shop-0.2.4 lib/power_shop/middleware/shopping_cart.rb
power_shop-0.2.3 lib/power_shop/middleware/shopping_cart.rb
power_shop-0.2.2 lib/power_shop/middleware/shopping_cart.rb
power_shop-0.2.1 lib/power_shop/middleware/shopping_cart.rb
power_shop-0.2.0 lib/power_shop/middleware/shopping_cart.rb
power_shop-0.1.1 lib/power_shop/middleware/shopping_cart.rb