kakurenbo 0.2.2 → 0.2.3
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/README.md +4 -1
- data/lib/kakurenbo.rb +16 -0
- data/lib/kakurenbo/core.rb +2 -2
- data/lib/kakurenbo/mixin_ar_base.rb +1 -1
- data/lib/kakurenbo/mixin_ar_callbacks.rb +13 -0
- data/lib/kakurenbo/mixin_ar_locking_optimistic.rb +19 -0
- data/lib/kakurenbo/mixin_ar_persistence.rb +22 -0
- data/lib/kakurenbo/mixin_ar_transactions.rb +12 -0
- data/lib/kakurenbo/version.rb +1 -1
- data/spec/kakurenbo/cores/associations_spec.rb +14 -0
- metadata +7 -3
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: e3aad6eafcf62a9e7ba09812cbac52dc20363462
         | 
| 4 | 
            +
              data.tar.gz: 849e24be08990b146d1a0099245adff73f996016
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: c0f5d787f66cbd5c0a2da245b272533a76d93da7b56f4d8b4f24ce9a3401a35e842fb71e222cd07c17332d9d634c3eaa828ee5861373349de374f073c1eba72a
         | 
| 7 | 
            +
              data.tar.gz: c99b96ca9429ca968895568383534d6723b0fb39908f21cc2151f7d76eeeb229ab367d5b1f807e6da7b87f34ac2e227be769d160e6424b9494cdedf7ee2f61ba
         | 
    
        data/README.md
    CHANGED
    
    | @@ -6,9 +6,12 @@ Kakurenbo is a re-implementation of [paranoia](http://github.com/radar/paranoia) | |
| 6 6 | 
             
            The usage of the Kakurenbo is very very very simple. Only add `deleted_at`(datetime) to column.
         | 
| 7 7 | 
             
            Of course you can use `acts_as_paranoid`.In addition, Kakurenbo has many advantageous.
         | 
| 8 8 |  | 
| 9 | 
            +
            # Warning
         | 
| 10 | 
            +
            ### kakurenbo is deprecated if you use in a new rails project!
         | 
| 11 | 
            +
            ### You should use [kakurenbo-puti](http://github.com/alfa-jpn/kakurenbo-puti)!
         | 
| 9 12 |  | 
| 10 | 
            -
            # Installation
         | 
| 11 13 |  | 
| 14 | 
            +
            # Installation
         | 
| 12 15 |  | 
| 13 16 | 
             
            ```ruby
         | 
| 14 17 | 
             
            gem 'kakurenbo'
         | 
    
        data/lib/kakurenbo.rb
    CHANGED
    
    | @@ -7,6 +7,10 @@ require "kakurenbo/version" | |
| 7 7 | 
             
            require "kakurenbo/mixin_ar_base"
         | 
| 8 8 | 
             
            require "kakurenbo/mixin_ar_associations"
         | 
| 9 9 | 
             
            require "kakurenbo/mixin_ar_relation"
         | 
| 10 | 
            +
            require "kakurenbo/mixin_ar_transactions"
         | 
| 11 | 
            +
            require "kakurenbo/mixin_ar_callbacks"
         | 
| 12 | 
            +
            require "kakurenbo/mixin_ar_persistence"
         | 
| 13 | 
            +
            require "kakurenbo/mixin_ar_locking_optimistic"
         | 
| 10 14 | 
             
            require "kakurenbo/core"
         | 
| 11 15 |  | 
| 12 16 | 
             
            # Kakurenbo Add ActiveRecord::RecordNotRestored to ActiveRecord
         | 
| @@ -20,3 +24,15 @@ ActiveRecord::Relation.send :include, Kakurenbo::MixinARRelation | |
| 20 24 |  | 
| 21 25 | 
             
            # Kakurenbo Mixin to ActiveRecord::Associations
         | 
| 22 26 | 
             
            ActiveRecord::Associations::Association.send :include, Kakurenbo::MixinARAssociations::Association
         | 
| 27 | 
            +
             | 
| 28 | 
            +
            # Kakurenbo Mixin to ActiveRecord::Transaction
         | 
| 29 | 
            +
            ActiveRecord::Transactions.send :include, Kakurenbo::MixinARTransactions
         | 
| 30 | 
            +
             | 
| 31 | 
            +
            # Kakurenbo Mixin to ActiveRecord::Callbacks
         | 
| 32 | 
            +
            ActiveRecord::Callbacks.send :include, Kakurenbo::MixinARCallbacks
         | 
| 33 | 
            +
             | 
| 34 | 
            +
            # Kakurenbo Mixin to ActiveRecord::Persistence
         | 
| 35 | 
            +
            ActiveRecord::Persistence.send :include, Kakurenbo::MixinARPersistence
         | 
| 36 | 
            +
             | 
| 37 | 
            +
            # Kakurenbo Mixin to ActiveRecord::Locking::Optimistic
         | 
| 38 | 
            +
            ActiveRecord::Locking::Optimistic.send :include, Kakurenbo::MixinARLockingOptimistic
         | 
    
        data/lib/kakurenbo/core.rb
    CHANGED
    
    | @@ -94,8 +94,8 @@ module Kakurenbo | |
| 94 94 | 
             
                  destroy(options) || raise(ActiveRecord::RecordNotDestroyed)
         | 
| 95 95 | 
             
                end
         | 
| 96 96 |  | 
| 97 | 
            -
                def destroy_row
         | 
| 98 | 
            -
                  relation_for_destroy.delete_all(nil,  | 
| 97 | 
            +
                def destroy_row(options = {:hard => true})
         | 
| 98 | 
            +
                  relation_for_destroy.delete_all(nil, options)
         | 
| 99 99 | 
             
                end
         | 
| 100 100 |  | 
| 101 101 | 
             
                def destroyed?
         | 
| @@ -25,7 +25,7 @@ module Kakurenbo | |
| 25 25 | 
             
                      remodel_as_soft_delete if has_kakurenbo_column?
         | 
| 26 26 |  | 
| 27 27 | 
             
                      # Reset @table name, because ActiveRecord doesn't expect initialized at here.
         | 
| 28 | 
            -
                      remove_instance_variable(:@table_name)
         | 
| 28 | 
            +
                      remove_instance_variable(:@table_name) if instance_variable_defined? :@table_name
         | 
| 29 29 | 
             
                    end
         | 
| 30 30 | 
             
                  end
         | 
| 31 31 |  | 
| @@ -0,0 +1,19 @@ | |
| 1 | 
            +
            module Kakurenbo
         | 
| 2 | 
            +
              module MixinARLockingOptimistic
         | 
| 3 | 
            +
                # Override methods.
         | 
| 4 | 
            +
                def self.included(base_class)
         | 
| 5 | 
            +
                  base_class.class_eval do
         | 
| 6 | 
            +
                   def destroy_row(options = {:hard => false})
         | 
| 7 | 
            +
                      affected_rows = super(options)
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                      if locking_enabled? && affected_rows != 1
         | 
| 10 | 
            +
                        raise ActiveRecord::StaleObjectError.new(self, "destroy")
         | 
| 11 | 
            +
                      end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                      affected_rows
         | 
| 14 | 
            +
                    end
         | 
| 15 | 
            +
                  end
         | 
| 16 | 
            +
                end
         | 
| 17 | 
            +
              end
         | 
| 18 | 
            +
            end
         | 
| 19 | 
            +
             | 
| @@ -0,0 +1,22 @@ | |
| 1 | 
            +
            module Kakurenbo
         | 
| 2 | 
            +
              module MixinARPersistence
         | 
| 3 | 
            +
                # Override methods.
         | 
| 4 | 
            +
                def self.included(base_class)
         | 
| 5 | 
            +
                  base_class.class_eval do
         | 
| 6 | 
            +
                    def destroy(options = {:hard => false})
         | 
| 7 | 
            +
                      raise ReadOnlyRecord if readonly?
         | 
| 8 | 
            +
                      destroy_associations
         | 
| 9 | 
            +
                      #destroy_row(options) if persisted?
         | 
| 10 | 
            +
                      destroy_row if persisted?
         | 
| 11 | 
            +
                      @destroyed = true
         | 
| 12 | 
            +
                      freeze
         | 
| 13 | 
            +
                    end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                    private
         | 
| 16 | 
            +
                    def destroy_row(options = {:hard => false})
         | 
| 17 | 
            +
                      relation_for_destroy.delete_all(nil, options)
         | 
| 18 | 
            +
                    end
         | 
| 19 | 
            +
                  end
         | 
| 20 | 
            +
                end
         | 
| 21 | 
            +
              end
         | 
| 22 | 
            +
            end
         | 
    
        data/lib/kakurenbo/version.rb
    CHANGED
    
    
| @@ -32,6 +32,10 @@ describe Kakurenbo::Core do | |
| 32 32 | 
             
                expect { parent.restore! }.not_to change(child_class, :count)
         | 
| 33 33 | 
             
              end
         | 
| 34 34 |  | 
| 35 | 
            +
              subject :subject_destroy_child_with_where do
         | 
| 36 | 
            +
                expect { destroy_child_with_where }.to change(child_class, :count).by(2)
         | 
| 37 | 
            +
              end
         | 
| 38 | 
            +
             | 
| 35 39 | 
             
              let :create_unrelated_children do
         | 
| 36 40 | 
             
                [
         | 
| 37 41 | 
             
                  child_class.create!,
         | 
| @@ -43,6 +47,10 @@ describe Kakurenbo::Core do | |
| 43 47 | 
             
                children.each {|child| child.destroy!}
         | 
| 44 48 | 
             
              end
         | 
| 45 49 |  | 
| 50 | 
            +
              let :destroy_child_with_where do
         | 
| 51 | 
            +
                parent.normal_child_models.where(id: children.first.id).destroy_all
         | 
| 52 | 
            +
              end
         | 
| 53 | 
            +
             | 
| 46 54 | 
             
              let :parent do
         | 
| 47 55 | 
             
                parent_class.create!
         | 
| 48 56 | 
             
              end
         | 
| @@ -75,6 +83,12 @@ describe Kakurenbo::Core do | |
| 75 83 | 
             
                    subject_soft_delete
         | 
| 76 84 | 
             
                  end
         | 
| 77 85 | 
             
                end
         | 
| 86 | 
            +
             | 
| 87 | 
            +
                context 'when child is deleted by destroy_all with where,' do
         | 
| 88 | 
            +
                  it 'child will be delete.' do
         | 
| 89 | 
            +
                    subject_destroy_child_with_where
         | 
| 90 | 
            +
                  end
         | 
| 91 | 
            +
                end
         | 
| 78 92 | 
             
              end
         | 
| 79 93 |  | 
| 80 94 | 
             
              describe 'ParanoidChildModel(has_many)' do
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: kakurenbo
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.2. | 
| 4 | 
            +
              version: 0.2.3
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - alfa-jpn
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2015-02-01 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: bundler
         | 
| @@ -118,7 +118,11 @@ files: | |
| 118 118 | 
             
            - lib/kakurenbo/core.rb
         | 
| 119 119 | 
             
            - lib/kakurenbo/mixin_ar_associations.rb
         | 
| 120 120 | 
             
            - lib/kakurenbo/mixin_ar_base.rb
         | 
| 121 | 
            +
            - lib/kakurenbo/mixin_ar_callbacks.rb
         | 
| 122 | 
            +
            - lib/kakurenbo/mixin_ar_locking_optimistic.rb
         | 
| 123 | 
            +
            - lib/kakurenbo/mixin_ar_persistence.rb
         | 
| 121 124 | 
             
            - lib/kakurenbo/mixin_ar_relation.rb
         | 
| 125 | 
            +
            - lib/kakurenbo/mixin_ar_transactions.rb
         | 
| 122 126 | 
             
            - lib/kakurenbo/version.rb
         | 
| 123 127 | 
             
            - spec/kakurenbo/cores/associations_spec.rb
         | 
| 124 128 | 
             
            - spec/kakurenbo/cores/callbacks_spec.rb
         | 
| @@ -148,7 +152,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 148 152 | 
             
                  version: '0'
         | 
| 149 153 | 
             
            requirements: []
         | 
| 150 154 | 
             
            rubyforge_project: 
         | 
| 151 | 
            -
            rubygems_version: 2. | 
| 155 | 
            +
            rubygems_version: 2.4.5
         | 
| 152 156 | 
             
            signing_key: 
         | 
| 153 157 | 
             
            specification_version: 4
         | 
| 154 158 | 
             
            summary: provides soft delete. Kakurenbo is a re-implementation of paranoia and acts_as_paranoid
         |