shoppe 1.0.3 → 1.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Rakefile +3 -3
- data/app/models/shoppe/order.rb +18 -18
- data/app/models/shoppe/order/actions.rb +17 -21
- data/app/models/shoppe/order/delivery.rb +1 -1
- data/app/models/shoppe/order_item.rb +2 -2
- data/app/models/shoppe/payment.rb +1 -1
- data/app/models/shoppe/user.rb +1 -1
- data/app/validators/permalink_validator.rb +1 -1
- data/lib/shoppe/version.rb +2 -2
- metadata +71 -87
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 7b79095cb897e80d6693d4cb9f1458f1581d17c2
         | 
| 4 | 
            +
              data.tar.gz: c44a89fb521ab3051320be885c2255e954265b27
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 3fcb2055f19c5bdbb15b97a924f6fe6d312da850aa8ebbe3ddc94ef43e9c71f81be613e9f6c4ddff1322f224e5ac1325aec4d73e3db1a0b3d3a2e890b70c2ed1
         | 
| 7 | 
            +
              data.tar.gz: f3ee60d2f4eb75d0ecc05786cc35772400c1a8783ff37e824d50a6066b41af889884aa466e69d4088e6dc7baa34029fdf5527c352b89b7657209e013c96f7bc7
         | 
    
        data/Rakefile
    CHANGED
    
    | @@ -22,13 +22,13 @@ namespace :shoppe do | |
| 22 22 | 
             
              task :changelog do
         | 
| 23 23 | 
             
                system "scp -P 32032 CHANGELOG.md vdt@185.44.252.32:/app/docs/CHANGELOG.md"
         | 
| 24 24 | 
             
              end
         | 
| 25 | 
            -
             | 
| 25 | 
            +
             | 
| 26 26 | 
             
              desc "Publish RDoc documentation from doc to api.tryshoppe.com"
         | 
| 27 27 | 
             
              task :docs do
         | 
| 28 28 | 
             
                if File.exist?('Rakefile')
         | 
| 29 29 | 
             
                  system "yard"
         | 
| 30 | 
            -
                  system "ssh root@ | 
| 31 | 
            -
                  system "scp -r doc root@ | 
| 30 | 
            +
                  system "ssh root@vm.adamcooke.io rm -Rf /var/www/shoppe-api"
         | 
| 31 | 
            +
                  system "scp -r doc root@vm.adamcooke.io:/var/www/shoppe-api"
         | 
| 32 32 | 
             
                  system "rm -Rf doc"
         | 
| 33 33 | 
             
                end
         | 
| 34 34 | 
             
              end
         | 
    
        data/app/models/shoppe/order.rb
    CHANGED
    
    | @@ -2,40 +2,40 @@ module Shoppe | |
| 2 2 | 
             
              class Order < ActiveRecord::Base
         | 
| 3 3 |  | 
| 4 4 | 
             
                self.table_name = 'shoppe_orders'
         | 
| 5 | 
            -
             | 
| 5 | 
            +
             | 
| 6 6 | 
             
                # Orders can have properties
         | 
| 7 | 
            -
                key_value_store :properties | 
| 8 | 
            -
             | 
| 7 | 
            +
                key_value_store :properties
         | 
| 8 | 
            +
             | 
| 9 9 | 
             
                # Require dependencies
         | 
| 10 10 | 
             
                require_dependency 'shoppe/order/states'
         | 
| 11 11 | 
             
                require_dependency 'shoppe/order/actions'
         | 
| 12 12 | 
             
                require_dependency 'shoppe/order/billing'
         | 
| 13 13 | 
             
                require_dependency 'shoppe/order/delivery'
         | 
| 14 | 
            -
             | 
| 14 | 
            +
             | 
| 15 15 | 
             
                # All items which make up this order
         | 
| 16 | 
            -
                has_many :order_items, :dependent => :destroy, :class_name => 'Shoppe::OrderItem'
         | 
| 16 | 
            +
                has_many :order_items, :dependent => :destroy, :class_name => 'Shoppe::OrderItem', :inverse_of => :order
         | 
| 17 17 | 
             
                accepts_nested_attributes_for :order_items, :allow_destroy => true, :reject_if => Proc.new { |a| a['ordered_item_id'].blank? }
         | 
| 18 18 |  | 
| 19 19 | 
             
                # All products which are part of this order (accessed through the items)
         | 
| 20 20 | 
             
                has_many :products, :through => :order_items, :class_name => 'Shoppe::Product', :source => :ordered_item, :source_type => 'Shoppe::Product'
         | 
| 21 | 
            -
             | 
| 21 | 
            +
             | 
| 22 22 | 
             
                # Validations
         | 
| 23 23 | 
             
                validates :token, :presence => true
         | 
| 24 24 | 
             
                with_options :if => Proc.new { |o| !o.building? } do |order|
         | 
| 25 25 | 
             
                  order.validates :email_address, :format => {:with => /\A\b[A-Z0-9\.\_\%\-\+]+@(?:[A-Z0-9\-]+\.)+[A-Z]{2,6}\b\z/i}
         | 
| 26 26 | 
             
                  order.validates :phone_number, :format => {:with => /\A[\d\ \-x\(\)]{7,}\z/}
         | 
| 27 27 | 
             
                end
         | 
| 28 | 
            -
             | 
| 28 | 
            +
             | 
| 29 29 | 
             
                # Set some defaults
         | 
| 30 30 | 
             
                before_validation { self.token = SecureRandom.uuid  if self.token.blank? }
         | 
| 31 | 
            -
             | 
| 31 | 
            +
             | 
| 32 32 | 
             
                # The order number
         | 
| 33 33 | 
             
                #
         | 
| 34 34 | 
             
                # @return [String] - the order number padded with at least 5 zeros
         | 
| 35 35 | 
             
                def number
         | 
| 36 36 | 
             
                  id ? id.to_s.rjust(6, '0') : nil
         | 
| 37 37 | 
             
                end
         | 
| 38 | 
            -
             | 
| 38 | 
            +
             | 
| 39 39 | 
             
                # The length of time the customer spent building the order before submitting it to us.
         | 
| 40 40 | 
             
                # The time from first item in basket to received.
         | 
| 41 41 | 
             
                #
         | 
| @@ -44,7 +44,7 @@ module Shoppe | |
| 44 44 | 
             
                  return nil if self.received_at.blank?
         | 
| 45 45 | 
             
                  self.created_at - self.received_at
         | 
| 46 46 | 
             
                end
         | 
| 47 | 
            -
             | 
| 47 | 
            +
             | 
| 48 48 | 
             
                # The name of the customer in the format of "Company (First Last)" or if they don't have
         | 
| 49 49 | 
             
                # company specified, just "First Last".
         | 
| 50 50 | 
             
                #
         | 
| @@ -52,42 +52,42 @@ module Shoppe | |
| 52 52 | 
             
                def customer_name
         | 
| 53 53 | 
             
                  company.blank? ? full_name : "#{company} (#{full_name})"
         | 
| 54 54 | 
             
                end
         | 
| 55 | 
            -
             | 
| 55 | 
            +
             | 
| 56 56 | 
             
                # The full name of the customer created by concatinting the first & last name
         | 
| 57 57 | 
             
                #
         | 
| 58 58 | 
             
                # @return [String]
         | 
| 59 59 | 
             
                def full_name
         | 
| 60 60 | 
             
                  "#{first_name} #{last_name}"
         | 
| 61 61 | 
             
                end
         | 
| 62 | 
            -
             | 
| 62 | 
            +
             | 
| 63 63 | 
             
                # Is this order empty? (i.e. doesn't have any items associated with it)
         | 
| 64 64 | 
             
                #
         | 
| 65 65 | 
             
                # @return [Boolean]
         | 
| 66 66 | 
             
                def empty?
         | 
| 67 67 | 
             
                  order_items.empty?
         | 
| 68 68 | 
             
                end
         | 
| 69 | 
            -
             | 
| 69 | 
            +
             | 
| 70 70 | 
             
                # Does this order have items?
         | 
| 71 71 | 
             
                #
         | 
| 72 72 | 
             
                # @return [Boolean]
         | 
| 73 73 | 
             
                def has_items?
         | 
| 74 74 | 
             
                  total_items > 0
         | 
| 75 75 | 
             
                end
         | 
| 76 | 
            -
             | 
| 76 | 
            +
             | 
| 77 77 | 
             
                # Return the number of items in the order?
         | 
| 78 78 | 
             
                #
         | 
| 79 79 | 
             
                # @return [Integer]
         | 
| 80 80 | 
             
                def total_items
         | 
| 81 81 | 
             
                  order_items.inject(0) { |t,i| t + i.quantity }
         | 
| 82 82 | 
             
                end
         | 
| 83 | 
            -
             | 
| 84 | 
            -
                def self.ransackable_attributes(auth_object = nil) | 
| 83 | 
            +
             | 
| 84 | 
            +
                def self.ransackable_attributes(auth_object = nil)
         | 
| 85 85 | 
             
                  ["id", "billing_postcode", "billing_address1", "billing_address2", "billing_address3", "billing_address4", "first_name", "last_name", "company", "email_address", "phone_number", "consignment_number", "status", "received_at"] + _ransackers.keys
         | 
| 86 86 | 
             
                end
         | 
| 87 | 
            -
             | 
| 87 | 
            +
             | 
| 88 88 | 
             
                def self.ransackable_associations(auth_object = nil)
         | 
| 89 89 | 
             
                  []
         | 
| 90 90 | 
             
                end
         | 
| 91 | 
            -
             | 
| 91 | 
            +
             | 
| 92 92 | 
             
              end
         | 
| 93 93 | 
             
            end
         | 
| @@ -54,15 +54,13 @@ module Shoppe | |
| 54 54 | 
             
                #
         | 
| 55 55 | 
             
                # @param user [Shoppe::User] the user who carried out this action    
         | 
| 56 56 | 
             
                def accept!(user = nil)
         | 
| 57 | 
            -
                   | 
| 58 | 
            -
                     | 
| 59 | 
            -
             | 
| 60 | 
            -
             | 
| 61 | 
            -
             | 
| 62 | 
            -
             | 
| 63 | 
            -
             | 
| 64 | 
            -
                      deliver_accepted_order_email
         | 
| 65 | 
            -
                    end
         | 
| 57 | 
            +
                  run_callbacks :acceptance do
         | 
| 58 | 
            +
                    self.accepted_at = Time.now
         | 
| 59 | 
            +
                    self.accepter = user if user
         | 
| 60 | 
            +
                    self.status = 'accepted'
         | 
| 61 | 
            +
                    self.save!
         | 
| 62 | 
            +
                    self.order_items.each(&:accept!)
         | 
| 63 | 
            +
                    deliver_accepted_order_email
         | 
| 66 64 | 
             
                  end
         | 
| 67 65 | 
             
                end
         | 
| 68 66 |  | 
| @@ -70,28 +68,26 @@ module Shoppe | |
| 70 68 | 
             
                #
         | 
| 71 69 | 
             
                # @param user [Shoppe::User] the user who carried out the action
         | 
| 72 70 | 
             
                def reject!(user = nil)
         | 
| 73 | 
            -
                   | 
| 74 | 
            -
                     | 
| 75 | 
            -
             | 
| 76 | 
            -
             | 
| 77 | 
            -
             | 
| 78 | 
            -
             | 
| 79 | 
            -
             | 
| 80 | 
            -
                      deliver_rejected_order_email
         | 
| 81 | 
            -
                    end
         | 
| 71 | 
            +
                  run_callbacks :rejection do
         | 
| 72 | 
            +
                    self.rejected_at = Time.now
         | 
| 73 | 
            +
                    self.rejecter = user if user
         | 
| 74 | 
            +
                    self.status = 'rejected'
         | 
| 75 | 
            +
                    self.save!
         | 
| 76 | 
            +
                    self.order_items.each(&:reject!)
         | 
| 77 | 
            +
                    deliver_rejected_order_email
         | 
| 82 78 | 
             
                  end
         | 
| 83 79 | 
             
                end
         | 
| 84 80 |  | 
| 85 81 | 
             
                def deliver_accepted_order_email
         | 
| 86 | 
            -
                  Shoppe::OrderMailer.accepted(self). | 
| 82 | 
            +
                  Shoppe::OrderMailer.accepted(self).deliver_now
         | 
| 87 83 | 
             
                end
         | 
| 88 84 |  | 
| 89 85 | 
             
                def deliver_rejected_order_email
         | 
| 90 | 
            -
                  Shoppe::OrderMailer.rejected(self). | 
| 86 | 
            +
                  Shoppe::OrderMailer.rejected(self).deliver_now
         | 
| 91 87 | 
             
                end
         | 
| 92 88 |  | 
| 93 89 | 
             
                def deliver_received_order_email
         | 
| 94 | 
            -
                  Shoppe::OrderMailer.received(self). | 
| 90 | 
            +
                  Shoppe::OrderMailer.received(self).deliver_now
         | 
| 95 91 | 
             
                end
         | 
| 96 92 |  | 
| 97 93 | 
             
              end
         | 
| @@ -6,7 +6,7 @@ module Shoppe | |
| 6 6 | 
             
                # The associated order
         | 
| 7 7 | 
             
                #
         | 
| 8 8 | 
             
                # @return [Shoppe::Order]
         | 
| 9 | 
            -
                belongs_to :order, :class_name => 'Shoppe::Order', :touch => true
         | 
| 9 | 
            +
                belongs_to :order, :class_name => 'Shoppe::Order', :touch => true, :inverse_of => :order_items
         | 
| 10 10 |  | 
| 11 11 | 
             
                # The item which has been ordered
         | 
| 12 12 | 
             
                belongs_to :ordered_item, :polymorphic => true
         | 
| @@ -20,7 +20,7 @@ module Shoppe | |
| 20 20 |  | 
| 21 21 | 
             
                validate do
         | 
| 22 22 | 
             
                  unless in_stock?
         | 
| 23 | 
            -
                    errors.add :quantity, : | 
| 23 | 
            +
                    errors.add :quantity, :too_high_quantity
         | 
| 24 24 | 
             
                  end
         | 
| 25 25 | 
             
                end
         | 
| 26 26 |  | 
| @@ -11,7 +11,7 @@ module Shoppe | |
| 11 11 | 
             
                # @return [Shoppe::Payment]
         | 
| 12 12 | 
             
                belongs_to :parent, :class_name => "Shoppe::Payment", :foreign_key => "parent_payment_id"
         | 
| 13 13 |  | 
| 14 | 
            -
                #  | 
| 14 | 
            +
                # Validations
         | 
| 15 15 | 
             
                validates :amount, :numericality => true
         | 
| 16 16 | 
             
                validates :reference, :presence => true
         | 
| 17 17 | 
             
                validates :method, :presence => true
         | 
    
        data/app/models/shoppe/user.rb
    CHANGED
    
    | @@ -29,7 +29,7 @@ module Shoppe | |
| 29 29 | 
             
                  self.password = SecureRandom.hex(8)
         | 
| 30 30 | 
             
                  self.password_confirmation = self.password
         | 
| 31 31 | 
             
                  self.save!
         | 
| 32 | 
            -
                  Shoppe::UserMailer.new_password(self). | 
| 32 | 
            +
                  Shoppe::UserMailer.new_password(self).deliver_now
         | 
| 33 33 | 
             
                end
         | 
| 34 34 |  | 
| 35 35 | 
             
                # Attempt to authenticate a user based on email & password. Returns the 
         | 
    
        data/lib/shoppe/version.rb
    CHANGED
    
    | @@ -1,3 +1,3 @@ | |
| 1 1 | 
             
            module Shoppe
         | 
| 2 | 
            -
              VERSION = "1.0. | 
| 3 | 
            -
            end
         | 
| 2 | 
            +
              VERSION = "1.0.5"
         | 
| 3 | 
            +
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: shoppe
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1.0. | 
| 4 | 
            +
              version: 1.0.5
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Adam Cooke
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2015- | 
| 11 | 
            +
            date: 2015-03-22 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: rails
         | 
| @@ -34,56 +34,42 @@ dependencies: | |
| 34 34 | 
             
              name: bcrypt
         | 
| 35 35 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 36 36 | 
             
                requirements:
         | 
| 37 | 
            -
                - - "~>"
         | 
| 38 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 39 | 
            -
                    version: '3.1'
         | 
| 40 37 | 
             
                - - ">="
         | 
| 41 38 | 
             
                  - !ruby/object:Gem::Version
         | 
| 42 39 | 
             
                    version: 3.1.2
         | 
| 40 | 
            +
                - - "<"
         | 
| 41 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 42 | 
            +
                    version: '3.2'
         | 
| 43 43 | 
             
              type: :runtime
         | 
| 44 44 | 
             
              prerelease: false
         | 
| 45 45 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 46 46 | 
             
                requirements:
         | 
| 47 | 
            -
                - - "~>"
         | 
| 48 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 49 | 
            -
                    version: '3.1'
         | 
| 50 47 | 
             
                - - ">="
         | 
| 51 48 | 
             
                  - !ruby/object:Gem::Version
         | 
| 52 49 | 
             
                    version: 3.1.2
         | 
| 50 | 
            +
                - - "<"
         | 
| 51 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 52 | 
            +
                    version: '3.2'
         | 
| 53 53 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 54 | 
            -
              name:  | 
| 54 | 
            +
              name: ransack
         | 
| 55 55 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 56 56 | 
             
                requirements:
         | 
| 57 | 
            -
                - - "~>"
         | 
| 58 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 59 | 
            -
                    version: 4.0.0
         | 
| 60 57 | 
             
                - - ">="
         | 
| 61 58 | 
             
                  - !ruby/object:Gem::Version
         | 
| 62 | 
            -
                    version:  | 
| 59 | 
            +
                    version: 1.2.0
         | 
| 60 | 
            +
                - - "<"
         | 
| 61 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 62 | 
            +
                    version: 1.6.3
         | 
| 63 63 | 
             
              type: :runtime
         | 
| 64 64 | 
             
              prerelease: false
         | 
| 65 65 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 66 66 | 
             
                requirements:
         | 
| 67 | 
            -
                - - "~>"
         | 
| 68 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 69 | 
            -
                    version: 4.0.0
         | 
| 70 67 | 
             
                - - ">="
         | 
| 71 68 | 
             
                  - !ruby/object:Gem::Version
         | 
| 72 | 
            -
                    version:  | 
| 73 | 
            -
            -  | 
| 74 | 
            -
              name: ransack
         | 
| 75 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 76 | 
            -
                requirements:
         | 
| 77 | 
            -
                - - "~>"
         | 
| 78 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 79 | 
            -
                    version: '1.2'
         | 
| 80 | 
            -
              type: :runtime
         | 
| 81 | 
            -
              prerelease: false
         | 
| 82 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 83 | 
            -
                requirements:
         | 
| 84 | 
            -
                - - "~>"
         | 
| 69 | 
            +
                    version: 1.2.0
         | 
| 70 | 
            +
                - - "<"
         | 
| 85 71 | 
             
                  - !ruby/object:Gem::Version
         | 
| 86 | 
            -
                    version:  | 
| 72 | 
            +
                    version: 1.6.3
         | 
| 87 73 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 88 74 | 
             
              name: kaminari
         | 
| 89 75 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -93,7 +79,7 @@ dependencies: | |
| 93 79 | 
             
                    version: 0.14.1
         | 
| 94 80 | 
             
                - - "<"
         | 
| 95 81 | 
             
                  - !ruby/object:Gem::Version
         | 
| 96 | 
            -
                    version: '0. | 
| 82 | 
            +
                    version: '0.17'
         | 
| 97 83 | 
             
              type: :runtime
         | 
| 98 84 | 
             
              prerelease: false
         | 
| 99 85 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| @@ -103,21 +89,27 @@ dependencies: | |
| 103 89 | 
             
                    version: 0.14.1
         | 
| 104 90 | 
             
                - - "<"
         | 
| 105 91 | 
             
                  - !ruby/object:Gem::Version
         | 
| 106 | 
            -
                    version: '0. | 
| 92 | 
            +
                    version: '0.17'
         | 
| 107 93 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 108 94 | 
             
              name: haml
         | 
| 109 95 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 110 96 | 
             
                requirements:
         | 
| 111 | 
            -
                - - " | 
| 97 | 
            +
                - - ">="
         | 
| 112 98 | 
             
                  - !ruby/object:Gem::Version
         | 
| 113 99 | 
             
                    version: '4.0'
         | 
| 100 | 
            +
                - - "<"
         | 
| 101 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 102 | 
            +
                    version: '5.0'
         | 
| 114 103 | 
             
              type: :runtime
         | 
| 115 104 | 
             
              prerelease: false
         | 
| 116 105 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 117 106 | 
             
                requirements:
         | 
| 118 | 
            -
                - - " | 
| 107 | 
            +
                - - ">="
         | 
| 119 108 | 
             
                  - !ruby/object:Gem::Version
         | 
| 120 109 | 
             
                    version: '4.0'
         | 
| 110 | 
            +
                - - "<"
         | 
| 111 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 112 | 
            +
                    version: '5.0'
         | 
| 121 113 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 122 114 | 
             
              name: dynamic_form
         | 
| 123 115 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -140,66 +132,24 @@ dependencies: | |
| 140 132 | 
             
                    version: 1.1.4
         | 
| 141 133 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 142 134 | 
             
              name: jquery-rails
         | 
| 143 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 144 | 
            -
                requirements:
         | 
| 145 | 
            -
                - - "~>"
         | 
| 146 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 147 | 
            -
                    version: '3'
         | 
| 148 | 
            -
              type: :runtime
         | 
| 149 | 
            -
              prerelease: false
         | 
| 150 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 151 | 
            -
                requirements:
         | 
| 152 | 
            -
                - - "~>"
         | 
| 153 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 154 | 
            -
                    version: '3'
         | 
| 155 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 156 | 
            -
              name: coffee-rails
         | 
| 157 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 158 | 
            -
                requirements:
         | 
| 159 | 
            -
                - - "~>"
         | 
| 160 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 161 | 
            -
                    version: '4'
         | 
| 162 | 
            -
              type: :runtime
         | 
| 163 | 
            -
              prerelease: false
         | 
| 164 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 165 | 
            -
                requirements:
         | 
| 166 | 
            -
                - - "~>"
         | 
| 167 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 168 | 
            -
                    version: '4'
         | 
| 169 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 170 | 
            -
              name: sass-rails
         | 
| 171 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 172 | 
            -
                requirements:
         | 
| 173 | 
            -
                - - "~>"
         | 
| 174 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 175 | 
            -
                    version: '4.0'
         | 
| 176 | 
            -
              type: :runtime
         | 
| 177 | 
            -
              prerelease: false
         | 
| 178 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 179 | 
            -
                requirements:
         | 
| 180 | 
            -
                - - "~>"
         | 
| 181 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 182 | 
            -
                    version: '4.0'
         | 
| 183 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 184 | 
            -
              name: uglifier
         | 
| 185 135 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 186 136 | 
             
                requirements:
         | 
| 187 137 | 
             
                - - ">="
         | 
| 188 138 | 
             
                  - !ruby/object:Gem::Version
         | 
| 189 | 
            -
                    version: ' | 
| 139 | 
            +
                    version: '3'
         | 
| 190 140 | 
             
                - - "<"
         | 
| 191 141 | 
             
                  - !ruby/object:Gem::Version
         | 
| 192 | 
            -
                    version: ' | 
| 142 | 
            +
                    version: '4.1'
         | 
| 193 143 | 
             
              type: :runtime
         | 
| 194 144 | 
             
              prerelease: false
         | 
| 195 145 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 196 146 | 
             
                requirements:
         | 
| 197 147 | 
             
                - - ">="
         | 
| 198 148 | 
             
                  - !ruby/object:Gem::Version
         | 
| 199 | 
            -
                    version: ' | 
| 149 | 
            +
                    version: '3'
         | 
| 200 150 | 
             
                - - "<"
         | 
| 201 151 | 
             
                  - !ruby/object:Gem::Version
         | 
| 202 | 
            -
                    version: ' | 
| 152 | 
            +
                    version: '4.1'
         | 
| 203 153 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 204 154 | 
             
              name: roo
         | 
| 205 155 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -244,16 +194,22 @@ dependencies: | |
| 244 194 | 
             
              name: nifty-utils
         | 
| 245 195 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 246 196 | 
             
                requirements:
         | 
| 247 | 
            -
                - - " | 
| 197 | 
            +
                - - ">="
         | 
| 248 198 | 
             
                  - !ruby/object:Gem::Version
         | 
| 249 199 | 
             
                    version: '1.0'
         | 
| 200 | 
            +
                - - "<"
         | 
| 201 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 202 | 
            +
                    version: '1.1'
         | 
| 250 203 | 
             
              type: :runtime
         | 
| 251 204 | 
             
              prerelease: false
         | 
| 252 205 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 253 206 | 
             
                requirements:
         | 
| 254 | 
            -
                - - " | 
| 207 | 
            +
                - - ">="
         | 
| 255 208 | 
             
                  - !ruby/object:Gem::Version
         | 
| 256 209 | 
             
                    version: '1.0'
         | 
| 210 | 
            +
                - - "<"
         | 
| 211 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 212 | 
            +
                    version: '1.1'
         | 
| 257 213 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 258 214 | 
             
              name: nifty-attachments
         | 
| 259 215 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -278,22 +234,50 @@ dependencies: | |
| 278 234 | 
             
              name: nifty-dialog
         | 
| 279 235 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 280 236 | 
             
                requirements:
         | 
| 281 | 
            -
                - - " | 
| 237 | 
            +
                - - ">="
         | 
| 282 238 | 
             
                  - !ruby/object:Gem::Version
         | 
| 283 239 | 
             
                    version: 1.0.7
         | 
| 240 | 
            +
                - - "<"
         | 
| 241 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 242 | 
            +
                    version: '1.1'
         | 
| 243 | 
            +
              type: :runtime
         | 
| 244 | 
            +
              prerelease: false
         | 
| 245 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 246 | 
            +
                requirements:
         | 
| 284 247 | 
             
                - - ">="
         | 
| 285 248 | 
             
                  - !ruby/object:Gem::Version
         | 
| 286 249 | 
             
                    version: 1.0.7
         | 
| 287 | 
            -
             | 
| 250 | 
            +
                - - "<"
         | 
| 251 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 252 | 
            +
                    version: '1.1'
         | 
| 253 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 254 | 
            +
              name: coffee-rails
         | 
| 255 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 256 | 
            +
                requirements:
         | 
| 257 | 
            +
                - - "~>"
         | 
| 258 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 259 | 
            +
                    version: '4'
         | 
| 260 | 
            +
              type: :development
         | 
| 288 261 | 
             
              prerelease: false
         | 
| 289 262 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 290 263 | 
             
                requirements:
         | 
| 291 264 | 
             
                - - "~>"
         | 
| 292 265 | 
             
                  - !ruby/object:Gem::Version
         | 
| 293 | 
            -
                    version:  | 
| 294 | 
            -
             | 
| 266 | 
            +
                    version: '4'
         | 
| 267 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 268 | 
            +
              name: sass-rails
         | 
| 269 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 270 | 
            +
                requirements:
         | 
| 271 | 
            +
                - - "~>"
         | 
| 295 272 | 
             
                  - !ruby/object:Gem::Version
         | 
| 296 | 
            -
                    version:  | 
| 273 | 
            +
                    version: '4.0'
         | 
| 274 | 
            +
              type: :development
         | 
| 275 | 
            +
              prerelease: false
         | 
| 276 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 277 | 
            +
                requirements:
         | 
| 278 | 
            +
                - - "~>"
         | 
| 279 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 280 | 
            +
                    version: '4.0'
         | 
| 297 281 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 298 282 | 
             
              name: sqlite3
         | 
| 299 283 | 
             
              requirement: !ruby/object:Gem::Requirement
         |