guard_against_physical_delete 1.0.2 → 2.1.1
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 +5 -5
- data/.github/workflows/master_and_pr.yml +30 -0
- data/.gitignore +0 -1
- data/CHANGELOG.md +44 -0
- data/README.md +50 -0
- data/bin/setup +8 -0
- data/bin/test +8 -0
- data/gemfiles/Gemfile_rails_5.0.rb +6 -0
- data/gemfiles/Gemfile_rails_5.0.rb.lock +75 -0
- data/gemfiles/Gemfile_rails_5.1.rb +5 -0
- data/gemfiles/Gemfile_rails_5.1.rb.lock +75 -0
- data/gemfiles/Gemfile_rails_5.2.rb +5 -0
- data/gemfiles/Gemfile_rails_5.2.rb.lock +75 -0
- data/gemfiles/Gemfile_rails_6.0.rb +5 -0
- data/gemfiles/Gemfile_rails_6.0.rb.lock +75 -0
- data/gemfiles/Gemfile_rails_6.1.rb +5 -0
- data/gemfiles/Gemfile_rails_6.1.rb.lock +74 -0
- data/guard_against_physical_delete.gemspec +12 -11
- data/lib/guard_against_physical_delete/base.rb +11 -1
- data/lib/guard_against_physical_delete/relation.rb +9 -8
- data/lib/guard_against_physical_delete/support_counter_cache/associations/builder/belongs_to.rb +41 -30
- data/lib/guard_against_physical_delete/support_counter_cache.rb +1 -12
- data/lib/guard_against_physical_delete/version.rb +3 -0
- data/lib/guard_against_physical_delete.rb +2 -2
- metadata +46 -42
- data/.travis.yml +0 -7
- data/Gemfile +0 -3
- data/README.rdoc +0 -17
- data/lib/guard_against_physical_delete/support_counter_cache/3.0.10/associations.rb +0 -43
- data/lib/guard_against_physical_delete/support_counter_cache/3.2_and_4.0/associations/builder/belongs_to.rb +0 -50
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 | 
            -
             | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 2 | 
            +
            SHA256:
         | 
| 3 | 
            +
              metadata.gz: bf3003e9c60b6e19e0f13de9cfca5c1ccf85f8a5c33cbfb327bc60ead38c9332
         | 
| 4 | 
            +
              data.tar.gz: 89f4cd9c51bb7bff0712215b6a5b503d7148b982694708a7a274423e59134a1b
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 55d3b887dbaf294c6b262620dc24b0d7be5cf147798ad8899137121b6cce1fdb547569acfdd1cec363a3879b3dd5758396533cf8db2bc361fcdabe7492e1b2ae
         | 
| 7 | 
            +
              data.tar.gz: b8e1c3941e184465eec596f0da8e8a662135c462bf5e42b66fbb4e5c1d52261407cb71b1433a4cd935efe8cc6ed78db826d23c61137092f2e981d91347246a4e
         | 
| @@ -0,0 +1,30 @@ | |
| 1 | 
            +
            name: master & PR
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            on:
         | 
| 4 | 
            +
              pull_request:
         | 
| 5 | 
            +
              push:
         | 
| 6 | 
            +
                branches:
         | 
| 7 | 
            +
                  - master
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            jobs:
         | 
| 10 | 
            +
              spec:
         | 
| 11 | 
            +
                runs-on: ubuntu-latest
         | 
| 12 | 
            +
                strategy:
         | 
| 13 | 
            +
                  matrix:
         | 
| 14 | 
            +
                    rails_version:
         | 
| 15 | 
            +
                      - "5.0"
         | 
| 16 | 
            +
                      - "5.1"
         | 
| 17 | 
            +
                      - "5.2"
         | 
| 18 | 
            +
                      - "6.0"
         | 
| 19 | 
            +
                      - "6.1"
         | 
| 20 | 
            +
                name: Test on Rails ${{ matrix.rails_version }}
         | 
| 21 | 
            +
                env:
         | 
| 22 | 
            +
                  BUNDLE_GEMFILE: gemfiles/Gemfile_rails_${{ matrix.rails_version }}.rb
         | 
| 23 | 
            +
                steps:
         | 
| 24 | 
            +
                - uses: actions/checkout@v2
         | 
| 25 | 
            +
                - uses: ruby/setup-ruby@v1
         | 
| 26 | 
            +
                  with:
         | 
| 27 | 
            +
                    ruby-version: 2.7
         | 
| 28 | 
            +
                    bundler-cache: true
         | 
| 29 | 
            +
                - name: rspec
         | 
| 30 | 
            +
                  run: bundle exec rspec
         | 
    
        data/.gitignore
    CHANGED
    
    
    
        data/CHANGELOG.md
    ADDED
    
    | @@ -0,0 +1,44 @@ | |
| 1 | 
            +
            # Changelog
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            ## Unreleased
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            ## 2.1.1 - 2022-05-26
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            ### Added
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            - Support activerecord 6.1.
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            ## 2.1.0 - 2021-12-02
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            ### Added
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            - Support activerecord 6.0.
         | 
| 16 | 
            +
             | 
| 17 | 
            +
            ### Fixed
         | 
| 18 | 
            +
             | 
| 19 | 
            +
            - Fix bug that it doesn't guard `#destroy` on activerecord 5.2.
         | 
| 20 | 
            +
             | 
| 21 | 
            +
            ## 2.0.0 - 2021-08-04
         | 
| 22 | 
            +
             | 
| 23 | 
            +
            ### Added
         | 
| 24 | 
            +
             | 
| 25 | 
            +
            - Support activerecord 5.
         | 
| 26 | 
            +
             | 
| 27 | 
            +
            ### Removed
         | 
| 28 | 
            +
             | 
| 29 | 
            +
            - Drop support for ruby < 2.0.
         | 
| 30 | 
            +
            - Drop support for activerecord < 5.
         | 
| 31 | 
            +
             | 
| 32 | 
            +
            ## 1.0.2 - 2017-03-16
         | 
| 33 | 
            +
             | 
| 34 | 
            +
            ## 1.0.1 - 2017-03-09
         | 
| 35 | 
            +
             | 
| 36 | 
            +
            ### Fixed
         | 
| 37 | 
            +
             | 
| 38 | 
            +
            - Fix files in gemspec.
         | 
| 39 | 
            +
             | 
| 40 | 
            +
            ## 1.0.0 - 2017-03-09
         | 
| 41 | 
            +
             | 
| 42 | 
            +
            ### Added
         | 
| 43 | 
            +
             | 
| 44 | 
            +
            - Initial release.
         | 
    
        data/README.md
    ADDED
    
    | @@ -0,0 +1,50 @@ | |
| 1 | 
            +
            # guard_against_physical_delete
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            [](https://rubygems.org/gems/guard_against_physical_delete)
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            A monkey patch for ActiveRecord to prevent physical deletion.
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            ## Installation
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            Add this line to your Rails application's Gemfile:
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            ```ruby
         | 
| 12 | 
            +
            gem 'guard_against_physical_delete'
         | 
| 13 | 
            +
            ```
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            And then execute:
         | 
| 16 | 
            +
             | 
| 17 | 
            +
            ```shell
         | 
| 18 | 
            +
            bundle install
         | 
| 19 | 
            +
            ```
         | 
| 20 | 
            +
             | 
| 21 | 
            +
            ## Usage
         | 
| 22 | 
            +
             | 
| 23 | 
            +
            If there is a record with a column named `deleted_at`,
         | 
| 24 | 
            +
            an exception is automatically raised on the methods that are likely to perform physical deletion.
         | 
| 25 | 
            +
             | 
| 26 | 
            +
            ```ruby
         | 
| 27 | 
            +
            # This will raise `GuardAgainstPhysicalDelete::PhysicalDeleteError`.
         | 
| 28 | 
            +
            user.delete
         | 
| 29 | 
            +
             | 
| 30 | 
            +
            # To allow phsycal deletion, do it in `physical_delete { ... }` block.
         | 
| 31 | 
            +
            user.class.physical_delete do
         | 
| 32 | 
            +
              user.delete
         | 
| 33 | 
            +
            end
         | 
| 34 | 
            +
            ```
         | 
| 35 | 
            +
             | 
| 36 | 
            +
            ### Configuration
         | 
| 37 | 
            +
             | 
| 38 | 
            +
            If you want to use a column name other than `deleted_at`,
         | 
| 39 | 
            +
            you can change it as follows:
         | 
| 40 | 
            +
             | 
| 41 | 
            +
            ```ruby
         | 
| 42 | 
            +
            class User < ApplicationRecord
         | 
| 43 | 
            +
              self.logical_delete_column = :removed_at
         | 
| 44 | 
            +
            end
         | 
| 45 | 
            +
            ```
         | 
| 46 | 
            +
             | 
| 47 | 
            +
            ## License
         | 
| 48 | 
            +
             | 
| 49 | 
            +
            This gem is available as open source under the terms of the MIT License.
         | 
| 50 | 
            +
            See [License.txt](/License.txt) for more details.
         | 
    
        data/bin/setup
    ADDED
    
    
    
        data/bin/test
    ADDED
    
    
| @@ -0,0 +1,75 @@ | |
| 1 | 
            +
            PATH
         | 
| 2 | 
            +
              remote: ..
         | 
| 3 | 
            +
              specs:
         | 
| 4 | 
            +
                guard_against_physical_delete (2.1.0)
         | 
| 5 | 
            +
                  activerecord (>= 5, < 6.2)
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            GEM
         | 
| 8 | 
            +
              remote: https://rubygems.org/
         | 
| 9 | 
            +
              specs:
         | 
| 10 | 
            +
                activemodel (5.0.7.2)
         | 
| 11 | 
            +
                  activesupport (= 5.0.7.2)
         | 
| 12 | 
            +
                activerecord (5.0.7.2)
         | 
| 13 | 
            +
                  activemodel (= 5.0.7.2)
         | 
| 14 | 
            +
                  activesupport (= 5.0.7.2)
         | 
| 15 | 
            +
                  arel (~> 7.0)
         | 
| 16 | 
            +
                activesupport (5.0.7.2)
         | 
| 17 | 
            +
                  concurrent-ruby (~> 1.0, >= 1.0.2)
         | 
| 18 | 
            +
                  i18n (>= 0.7, < 2)
         | 
| 19 | 
            +
                  minitest (~> 5.1)
         | 
| 20 | 
            +
                  tzinfo (~> 1.1)
         | 
| 21 | 
            +
                arel (7.1.4)
         | 
| 22 | 
            +
                concurrent-ruby (1.1.9)
         | 
| 23 | 
            +
                countdownlatch (1.0.0)
         | 
| 24 | 
            +
                database_cleaner (2.0.1)
         | 
| 25 | 
            +
                  database_cleaner-active_record (~> 2.0.0)
         | 
| 26 | 
            +
                database_cleaner-active_record (2.0.1)
         | 
| 27 | 
            +
                  activerecord (>= 5.a)
         | 
| 28 | 
            +
                  database_cleaner-core (~> 2.0.0)
         | 
| 29 | 
            +
                database_cleaner-core (2.0.1)
         | 
| 30 | 
            +
                diff-lcs (1.4.4)
         | 
| 31 | 
            +
                docile (1.4.0)
         | 
| 32 | 
            +
                i18n (1.8.11)
         | 
| 33 | 
            +
                  concurrent-ruby (~> 1.0)
         | 
| 34 | 
            +
                minitest (5.14.4)
         | 
| 35 | 
            +
                rake (13.0.6)
         | 
| 36 | 
            +
                rspec (3.10.0)
         | 
| 37 | 
            +
                  rspec-core (~> 3.10.0)
         | 
| 38 | 
            +
                  rspec-expectations (~> 3.10.0)
         | 
| 39 | 
            +
                  rspec-mocks (~> 3.10.0)
         | 
| 40 | 
            +
                rspec-core (3.10.1)
         | 
| 41 | 
            +
                  rspec-support (~> 3.10.0)
         | 
| 42 | 
            +
                rspec-expectations (3.10.1)
         | 
| 43 | 
            +
                  diff-lcs (>= 1.2.0, < 2.0)
         | 
| 44 | 
            +
                  rspec-support (~> 3.10.0)
         | 
| 45 | 
            +
                rspec-mocks (3.10.2)
         | 
| 46 | 
            +
                  diff-lcs (>= 1.2.0, < 2.0)
         | 
| 47 | 
            +
                  rspec-support (~> 3.10.0)
         | 
| 48 | 
            +
                rspec-support (3.10.3)
         | 
| 49 | 
            +
                simplecov (0.21.2)
         | 
| 50 | 
            +
                  docile (~> 1.1)
         | 
| 51 | 
            +
                  simplecov-html (~> 0.11)
         | 
| 52 | 
            +
                  simplecov_json_formatter (~> 0.1)
         | 
| 53 | 
            +
                simplecov-html (0.12.3)
         | 
| 54 | 
            +
                simplecov_json_formatter (0.1.3)
         | 
| 55 | 
            +
                sqlite3 (1.3.13)
         | 
| 56 | 
            +
                thread_safe (0.3.6)
         | 
| 57 | 
            +
                tzinfo (1.2.9)
         | 
| 58 | 
            +
                  thread_safe (~> 0.1)
         | 
| 59 | 
            +
             | 
| 60 | 
            +
            PLATFORMS
         | 
| 61 | 
            +
              x86_64-linux
         | 
| 62 | 
            +
             | 
| 63 | 
            +
            DEPENDENCIES
         | 
| 64 | 
            +
              activerecord (~> 5.0.0)
         | 
| 65 | 
            +
              bundler
         | 
| 66 | 
            +
              countdownlatch
         | 
| 67 | 
            +
              database_cleaner
         | 
| 68 | 
            +
              guard_against_physical_delete!
         | 
| 69 | 
            +
              rake (~> 13)
         | 
| 70 | 
            +
              rspec (~> 3)
         | 
| 71 | 
            +
              simplecov
         | 
| 72 | 
            +
              sqlite3 (~> 1.3.0)
         | 
| 73 | 
            +
             | 
| 74 | 
            +
            BUNDLED WITH
         | 
| 75 | 
            +
               2.2.29
         | 
| @@ -0,0 +1,75 @@ | |
| 1 | 
            +
            PATH
         | 
| 2 | 
            +
              remote: ..
         | 
| 3 | 
            +
              specs:
         | 
| 4 | 
            +
                guard_against_physical_delete (2.1.0)
         | 
| 5 | 
            +
                  activerecord (>= 5, < 6.2)
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            GEM
         | 
| 8 | 
            +
              remote: https://rubygems.org/
         | 
| 9 | 
            +
              specs:
         | 
| 10 | 
            +
                activemodel (5.1.7)
         | 
| 11 | 
            +
                  activesupport (= 5.1.7)
         | 
| 12 | 
            +
                activerecord (5.1.7)
         | 
| 13 | 
            +
                  activemodel (= 5.1.7)
         | 
| 14 | 
            +
                  activesupport (= 5.1.7)
         | 
| 15 | 
            +
                  arel (~> 8.0)
         | 
| 16 | 
            +
                activesupport (5.1.7)
         | 
| 17 | 
            +
                  concurrent-ruby (~> 1.0, >= 1.0.2)
         | 
| 18 | 
            +
                  i18n (>= 0.7, < 2)
         | 
| 19 | 
            +
                  minitest (~> 5.1)
         | 
| 20 | 
            +
                  tzinfo (~> 1.1)
         | 
| 21 | 
            +
                arel (8.0.0)
         | 
| 22 | 
            +
                concurrent-ruby (1.1.9)
         | 
| 23 | 
            +
                countdownlatch (1.0.0)
         | 
| 24 | 
            +
                database_cleaner (2.0.1)
         | 
| 25 | 
            +
                  database_cleaner-active_record (~> 2.0.0)
         | 
| 26 | 
            +
                database_cleaner-active_record (2.0.1)
         | 
| 27 | 
            +
                  activerecord (>= 5.a)
         | 
| 28 | 
            +
                  database_cleaner-core (~> 2.0.0)
         | 
| 29 | 
            +
                database_cleaner-core (2.0.1)
         | 
| 30 | 
            +
                diff-lcs (1.4.4)
         | 
| 31 | 
            +
                docile (1.4.0)
         | 
| 32 | 
            +
                i18n (1.8.11)
         | 
| 33 | 
            +
                  concurrent-ruby (~> 1.0)
         | 
| 34 | 
            +
                minitest (5.14.4)
         | 
| 35 | 
            +
                rake (13.0.6)
         | 
| 36 | 
            +
                rspec (3.10.0)
         | 
| 37 | 
            +
                  rspec-core (~> 3.10.0)
         | 
| 38 | 
            +
                  rspec-expectations (~> 3.10.0)
         | 
| 39 | 
            +
                  rspec-mocks (~> 3.10.0)
         | 
| 40 | 
            +
                rspec-core (3.10.1)
         | 
| 41 | 
            +
                  rspec-support (~> 3.10.0)
         | 
| 42 | 
            +
                rspec-expectations (3.10.1)
         | 
| 43 | 
            +
                  diff-lcs (>= 1.2.0, < 2.0)
         | 
| 44 | 
            +
                  rspec-support (~> 3.10.0)
         | 
| 45 | 
            +
                rspec-mocks (3.10.2)
         | 
| 46 | 
            +
                  diff-lcs (>= 1.2.0, < 2.0)
         | 
| 47 | 
            +
                  rspec-support (~> 3.10.0)
         | 
| 48 | 
            +
                rspec-support (3.10.3)
         | 
| 49 | 
            +
                simplecov (0.21.2)
         | 
| 50 | 
            +
                  docile (~> 1.1)
         | 
| 51 | 
            +
                  simplecov-html (~> 0.11)
         | 
| 52 | 
            +
                  simplecov_json_formatter (~> 0.1)
         | 
| 53 | 
            +
                simplecov-html (0.12.3)
         | 
| 54 | 
            +
                simplecov_json_formatter (0.1.3)
         | 
| 55 | 
            +
                sqlite3 (1.4.2)
         | 
| 56 | 
            +
                thread_safe (0.3.6)
         | 
| 57 | 
            +
                tzinfo (1.2.9)
         | 
| 58 | 
            +
                  thread_safe (~> 0.1)
         | 
| 59 | 
            +
             | 
| 60 | 
            +
            PLATFORMS
         | 
| 61 | 
            +
              x86_64-linux
         | 
| 62 | 
            +
             | 
| 63 | 
            +
            DEPENDENCIES
         | 
| 64 | 
            +
              activerecord (~> 5.1.0)
         | 
| 65 | 
            +
              bundler
         | 
| 66 | 
            +
              countdownlatch
         | 
| 67 | 
            +
              database_cleaner
         | 
| 68 | 
            +
              guard_against_physical_delete!
         | 
| 69 | 
            +
              rake (~> 13)
         | 
| 70 | 
            +
              rspec (~> 3)
         | 
| 71 | 
            +
              simplecov
         | 
| 72 | 
            +
              sqlite3 (~> 1.4)
         | 
| 73 | 
            +
             | 
| 74 | 
            +
            BUNDLED WITH
         | 
| 75 | 
            +
               2.2.29
         | 
| @@ -0,0 +1,75 @@ | |
| 1 | 
            +
            PATH
         | 
| 2 | 
            +
              remote: ..
         | 
| 3 | 
            +
              specs:
         | 
| 4 | 
            +
                guard_against_physical_delete (2.1.0)
         | 
| 5 | 
            +
                  activerecord (>= 5, < 6.2)
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            GEM
         | 
| 8 | 
            +
              remote: https://rubygems.org/
         | 
| 9 | 
            +
              specs:
         | 
| 10 | 
            +
                activemodel (5.2.6)
         | 
| 11 | 
            +
                  activesupport (= 5.2.6)
         | 
| 12 | 
            +
                activerecord (5.2.6)
         | 
| 13 | 
            +
                  activemodel (= 5.2.6)
         | 
| 14 | 
            +
                  activesupport (= 5.2.6)
         | 
| 15 | 
            +
                  arel (>= 9.0)
         | 
| 16 | 
            +
                activesupport (5.2.6)
         | 
| 17 | 
            +
                  concurrent-ruby (~> 1.0, >= 1.0.2)
         | 
| 18 | 
            +
                  i18n (>= 0.7, < 2)
         | 
| 19 | 
            +
                  minitest (~> 5.1)
         | 
| 20 | 
            +
                  tzinfo (~> 1.1)
         | 
| 21 | 
            +
                arel (9.0.0)
         | 
| 22 | 
            +
                concurrent-ruby (1.1.9)
         | 
| 23 | 
            +
                countdownlatch (1.0.0)
         | 
| 24 | 
            +
                database_cleaner (2.0.1)
         | 
| 25 | 
            +
                  database_cleaner-active_record (~> 2.0.0)
         | 
| 26 | 
            +
                database_cleaner-active_record (2.0.1)
         | 
| 27 | 
            +
                  activerecord (>= 5.a)
         | 
| 28 | 
            +
                  database_cleaner-core (~> 2.0.0)
         | 
| 29 | 
            +
                database_cleaner-core (2.0.1)
         | 
| 30 | 
            +
                diff-lcs (1.4.4)
         | 
| 31 | 
            +
                docile (1.4.0)
         | 
| 32 | 
            +
                i18n (1.8.11)
         | 
| 33 | 
            +
                  concurrent-ruby (~> 1.0)
         | 
| 34 | 
            +
                minitest (5.14.4)
         | 
| 35 | 
            +
                rake (13.0.6)
         | 
| 36 | 
            +
                rspec (3.10.0)
         | 
| 37 | 
            +
                  rspec-core (~> 3.10.0)
         | 
| 38 | 
            +
                  rspec-expectations (~> 3.10.0)
         | 
| 39 | 
            +
                  rspec-mocks (~> 3.10.0)
         | 
| 40 | 
            +
                rspec-core (3.10.1)
         | 
| 41 | 
            +
                  rspec-support (~> 3.10.0)
         | 
| 42 | 
            +
                rspec-expectations (3.10.1)
         | 
| 43 | 
            +
                  diff-lcs (>= 1.2.0, < 2.0)
         | 
| 44 | 
            +
                  rspec-support (~> 3.10.0)
         | 
| 45 | 
            +
                rspec-mocks (3.10.2)
         | 
| 46 | 
            +
                  diff-lcs (>= 1.2.0, < 2.0)
         | 
| 47 | 
            +
                  rspec-support (~> 3.10.0)
         | 
| 48 | 
            +
                rspec-support (3.10.3)
         | 
| 49 | 
            +
                simplecov (0.21.2)
         | 
| 50 | 
            +
                  docile (~> 1.1)
         | 
| 51 | 
            +
                  simplecov-html (~> 0.11)
         | 
| 52 | 
            +
                  simplecov_json_formatter (~> 0.1)
         | 
| 53 | 
            +
                simplecov-html (0.12.3)
         | 
| 54 | 
            +
                simplecov_json_formatter (0.1.3)
         | 
| 55 | 
            +
                sqlite3 (1.4.2)
         | 
| 56 | 
            +
                thread_safe (0.3.6)
         | 
| 57 | 
            +
                tzinfo (1.2.9)
         | 
| 58 | 
            +
                  thread_safe (~> 0.1)
         | 
| 59 | 
            +
             | 
| 60 | 
            +
            PLATFORMS
         | 
| 61 | 
            +
              x86_64-linux
         | 
| 62 | 
            +
             | 
| 63 | 
            +
            DEPENDENCIES
         | 
| 64 | 
            +
              activerecord (~> 5.2.0)
         | 
| 65 | 
            +
              bundler
         | 
| 66 | 
            +
              countdownlatch
         | 
| 67 | 
            +
              database_cleaner
         | 
| 68 | 
            +
              guard_against_physical_delete!
         | 
| 69 | 
            +
              rake (~> 13)
         | 
| 70 | 
            +
              rspec (~> 3)
         | 
| 71 | 
            +
              simplecov
         | 
| 72 | 
            +
              sqlite3 (~> 1.4)
         | 
| 73 | 
            +
             | 
| 74 | 
            +
            BUNDLED WITH
         | 
| 75 | 
            +
               2.2.29
         | 
| @@ -0,0 +1,75 @@ | |
| 1 | 
            +
            PATH
         | 
| 2 | 
            +
              remote: ..
         | 
| 3 | 
            +
              specs:
         | 
| 4 | 
            +
                guard_against_physical_delete (2.1.0)
         | 
| 5 | 
            +
                  activerecord (>= 5, < 6.2)
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            GEM
         | 
| 8 | 
            +
              remote: https://rubygems.org/
         | 
| 9 | 
            +
              specs:
         | 
| 10 | 
            +
                activemodel (6.0.4.1)
         | 
| 11 | 
            +
                  activesupport (= 6.0.4.1)
         | 
| 12 | 
            +
                activerecord (6.0.4.1)
         | 
| 13 | 
            +
                  activemodel (= 6.0.4.1)
         | 
| 14 | 
            +
                  activesupport (= 6.0.4.1)
         | 
| 15 | 
            +
                activesupport (6.0.4.1)
         | 
| 16 | 
            +
                  concurrent-ruby (~> 1.0, >= 1.0.2)
         | 
| 17 | 
            +
                  i18n (>= 0.7, < 2)
         | 
| 18 | 
            +
                  minitest (~> 5.1)
         | 
| 19 | 
            +
                  tzinfo (~> 1.1)
         | 
| 20 | 
            +
                  zeitwerk (~> 2.2, >= 2.2.2)
         | 
| 21 | 
            +
                concurrent-ruby (1.1.9)
         | 
| 22 | 
            +
                countdownlatch (1.0.0)
         | 
| 23 | 
            +
                database_cleaner (2.0.1)
         | 
| 24 | 
            +
                  database_cleaner-active_record (~> 2.0.0)
         | 
| 25 | 
            +
                database_cleaner-active_record (2.0.1)
         | 
| 26 | 
            +
                  activerecord (>= 5.a)
         | 
| 27 | 
            +
                  database_cleaner-core (~> 2.0.0)
         | 
| 28 | 
            +
                database_cleaner-core (2.0.1)
         | 
| 29 | 
            +
                diff-lcs (1.4.4)
         | 
| 30 | 
            +
                docile (1.4.0)
         | 
| 31 | 
            +
                i18n (1.8.11)
         | 
| 32 | 
            +
                  concurrent-ruby (~> 1.0)
         | 
| 33 | 
            +
                minitest (5.14.4)
         | 
| 34 | 
            +
                rake (13.0.6)
         | 
| 35 | 
            +
                rspec (3.10.0)
         | 
| 36 | 
            +
                  rspec-core (~> 3.10.0)
         | 
| 37 | 
            +
                  rspec-expectations (~> 3.10.0)
         | 
| 38 | 
            +
                  rspec-mocks (~> 3.10.0)
         | 
| 39 | 
            +
                rspec-core (3.10.1)
         | 
| 40 | 
            +
                  rspec-support (~> 3.10.0)
         | 
| 41 | 
            +
                rspec-expectations (3.10.1)
         | 
| 42 | 
            +
                  diff-lcs (>= 1.2.0, < 2.0)
         | 
| 43 | 
            +
                  rspec-support (~> 3.10.0)
         | 
| 44 | 
            +
                rspec-mocks (3.10.2)
         | 
| 45 | 
            +
                  diff-lcs (>= 1.2.0, < 2.0)
         | 
| 46 | 
            +
                  rspec-support (~> 3.10.0)
         | 
| 47 | 
            +
                rspec-support (3.10.3)
         | 
| 48 | 
            +
                simplecov (0.21.2)
         | 
| 49 | 
            +
                  docile (~> 1.1)
         | 
| 50 | 
            +
                  simplecov-html (~> 0.11)
         | 
| 51 | 
            +
                  simplecov_json_formatter (~> 0.1)
         | 
| 52 | 
            +
                simplecov-html (0.12.3)
         | 
| 53 | 
            +
                simplecov_json_formatter (0.1.3)
         | 
| 54 | 
            +
                sqlite3 (1.4.2)
         | 
| 55 | 
            +
                thread_safe (0.3.6)
         | 
| 56 | 
            +
                tzinfo (1.2.9)
         | 
| 57 | 
            +
                  thread_safe (~> 0.1)
         | 
| 58 | 
            +
                zeitwerk (2.5.1)
         | 
| 59 | 
            +
             | 
| 60 | 
            +
            PLATFORMS
         | 
| 61 | 
            +
              x86_64-linux
         | 
| 62 | 
            +
             | 
| 63 | 
            +
            DEPENDENCIES
         | 
| 64 | 
            +
              activerecord (~> 6.0.0)
         | 
| 65 | 
            +
              bundler
         | 
| 66 | 
            +
              countdownlatch
         | 
| 67 | 
            +
              database_cleaner
         | 
| 68 | 
            +
              guard_against_physical_delete!
         | 
| 69 | 
            +
              rake (~> 13)
         | 
| 70 | 
            +
              rspec (~> 3)
         | 
| 71 | 
            +
              simplecov
         | 
| 72 | 
            +
              sqlite3 (~> 1.4)
         | 
| 73 | 
            +
             | 
| 74 | 
            +
            BUNDLED WITH
         | 
| 75 | 
            +
               2.2.29
         | 
| @@ -0,0 +1,74 @@ | |
| 1 | 
            +
            PATH
         | 
| 2 | 
            +
              remote: ..
         | 
| 3 | 
            +
              specs:
         | 
| 4 | 
            +
                guard_against_physical_delete (2.1.0)
         | 
| 5 | 
            +
                  activerecord (>= 5, < 6.2)
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            GEM
         | 
| 8 | 
            +
              remote: https://rubygems.org/
         | 
| 9 | 
            +
              specs:
         | 
| 10 | 
            +
                activemodel (6.1.4.1)
         | 
| 11 | 
            +
                  activesupport (= 6.1.4.1)
         | 
| 12 | 
            +
                activerecord (6.1.4.1)
         | 
| 13 | 
            +
                  activemodel (= 6.1.4.1)
         | 
| 14 | 
            +
                  activesupport (= 6.1.4.1)
         | 
| 15 | 
            +
                activesupport (6.1.4.1)
         | 
| 16 | 
            +
                  concurrent-ruby (~> 1.0, >= 1.0.2)
         | 
| 17 | 
            +
                  i18n (>= 1.6, < 2)
         | 
| 18 | 
            +
                  minitest (>= 5.1)
         | 
| 19 | 
            +
                  tzinfo (~> 2.0)
         | 
| 20 | 
            +
                  zeitwerk (~> 2.3)
         | 
| 21 | 
            +
                concurrent-ruby (1.1.9)
         | 
| 22 | 
            +
                countdownlatch (1.0.0)
         | 
| 23 | 
            +
                database_cleaner (2.0.1)
         | 
| 24 | 
            +
                  database_cleaner-active_record (~> 2.0.0)
         | 
| 25 | 
            +
                database_cleaner-active_record (2.0.1)
         | 
| 26 | 
            +
                  activerecord (>= 5.a)
         | 
| 27 | 
            +
                  database_cleaner-core (~> 2.0.0)
         | 
| 28 | 
            +
                database_cleaner-core (2.0.1)
         | 
| 29 | 
            +
                diff-lcs (1.4.4)
         | 
| 30 | 
            +
                docile (1.4.0)
         | 
| 31 | 
            +
                i18n (1.8.11)
         | 
| 32 | 
            +
                  concurrent-ruby (~> 1.0)
         | 
| 33 | 
            +
                minitest (5.14.4)
         | 
| 34 | 
            +
                rake (13.0.6)
         | 
| 35 | 
            +
                rspec (3.10.0)
         | 
| 36 | 
            +
                  rspec-core (~> 3.10.0)
         | 
| 37 | 
            +
                  rspec-expectations (~> 3.10.0)
         | 
| 38 | 
            +
                  rspec-mocks (~> 3.10.0)
         | 
| 39 | 
            +
                rspec-core (3.10.1)
         | 
| 40 | 
            +
                  rspec-support (~> 3.10.0)
         | 
| 41 | 
            +
                rspec-expectations (3.10.1)
         | 
| 42 | 
            +
                  diff-lcs (>= 1.2.0, < 2.0)
         | 
| 43 | 
            +
                  rspec-support (~> 3.10.0)
         | 
| 44 | 
            +
                rspec-mocks (3.10.2)
         | 
| 45 | 
            +
                  diff-lcs (>= 1.2.0, < 2.0)
         | 
| 46 | 
            +
                  rspec-support (~> 3.10.0)
         | 
| 47 | 
            +
                rspec-support (3.10.3)
         | 
| 48 | 
            +
                simplecov (0.21.2)
         | 
| 49 | 
            +
                  docile (~> 1.1)
         | 
| 50 | 
            +
                  simplecov-html (~> 0.11)
         | 
| 51 | 
            +
                  simplecov_json_formatter (~> 0.1)
         | 
| 52 | 
            +
                simplecov-html (0.12.3)
         | 
| 53 | 
            +
                simplecov_json_formatter (0.1.3)
         | 
| 54 | 
            +
                sqlite3 (1.4.2)
         | 
| 55 | 
            +
                tzinfo (2.0.4)
         | 
| 56 | 
            +
                  concurrent-ruby (~> 1.0)
         | 
| 57 | 
            +
                zeitwerk (2.5.1)
         | 
| 58 | 
            +
             | 
| 59 | 
            +
            PLATFORMS
         | 
| 60 | 
            +
              x86_64-linux
         | 
| 61 | 
            +
             | 
| 62 | 
            +
            DEPENDENCIES
         | 
| 63 | 
            +
              activerecord (~> 6.1.0)
         | 
| 64 | 
            +
              bundler
         | 
| 65 | 
            +
              countdownlatch
         | 
| 66 | 
            +
              database_cleaner
         | 
| 67 | 
            +
              guard_against_physical_delete!
         | 
| 68 | 
            +
              rake (~> 13)
         | 
| 69 | 
            +
              rspec (~> 3)
         | 
| 70 | 
            +
              simplecov
         | 
| 71 | 
            +
              sqlite3 (~> 1.4)
         | 
| 72 | 
            +
             | 
| 73 | 
            +
            BUNDLED WITH
         | 
| 74 | 
            +
               2.2.29
         | 
| @@ -1,28 +1,29 @@ | |
| 1 1 | 
             
            # -*- encoding: utf-8 -*-
         | 
| 2 2 |  | 
| 3 | 
            +
            require_relative "lib/guard_against_physical_delete/version"
         | 
| 4 | 
            +
             | 
| 3 5 | 
             
            Gem::Specification.new do |s|
         | 
| 4 6 | 
             
              s.name = "guard_against_physical_delete"
         | 
| 5 | 
            -
              s.version =  | 
| 7 | 
            +
              s.version = GuardAgainstPhysicalDelete::VERSION
         | 
| 6 8 |  | 
| 7 9 | 
             
              s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
         | 
| 8 10 | 
             
              s.authors = ["MORITA shingo"]
         | 
| 9 11 | 
             
              s.date = "2012-03-06"
         | 
| 10 | 
            -
              s.description = "Guard against physical delete"
         | 
| 11 12 | 
             
              s.email = "morita@cookpad.com"
         | 
| 12 | 
            -
              s.extra_rdoc_files = [
         | 
| 13 | 
            -
                "README.rdoc"
         | 
| 14 | 
            -
              ]
         | 
| 15 13 | 
             
              s.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^spec/}) }
         | 
| 16 14 | 
             
              s.homepage = "http://github.com/cookpad/guard_against_physical_delete"
         | 
| 17 15 | 
             
              s.require_paths = ["lib"]
         | 
| 18 16 | 
             
              s.rubygems_version = "1.8.15"
         | 
| 19 | 
            -
              s.summary = " | 
| 17 | 
            +
              s.summary = "A monkey patch for ActiveRecord to prevent physical deletion."
         | 
| 18 | 
            +
             | 
| 19 | 
            +
              s.metadata["changelog_uri"] = "#{s.homepage}/blob/master/CHANGELOG.md"
         | 
| 20 | 
            +
              s.metadata["homepage_uri"] = s.homepage
         | 
| 21 | 
            +
              s.metadata["source_code_uri"] = s.homepage
         | 
| 20 22 |  | 
| 21 | 
            -
              s.add_runtime_dependency "activerecord", ">=  | 
| 22 | 
            -
              s.add_development_dependency "rake", " | 
| 23 | 
            -
              s.add_development_dependency "rspec", " | 
| 24 | 
            -
              s.add_development_dependency "sqlite3"
         | 
| 25 | 
            -
              s.add_development_dependency "rdoc", "~> 3.12"
         | 
| 23 | 
            +
              s.add_runtime_dependency "activerecord", ">= 5", "< 6.2"
         | 
| 24 | 
            +
              s.add_development_dependency "rake", "~> 13"
         | 
| 25 | 
            +
              s.add_development_dependency "rspec", "~> 3"
         | 
| 26 | 
            +
              s.add_development_dependency "sqlite3", "~> 1.4"
         | 
| 26 27 | 
             
              s.add_development_dependency "bundler"
         | 
| 27 28 | 
             
              s.add_development_dependency "database_cleaner"
         | 
| 28 29 | 
             
              s.add_development_dependency "simplecov"
         | 
| @@ -36,7 +36,7 @@ module GuardAgainstPhysicalDelete | |
| 36 36 | 
             
                  private
         | 
| 37 37 |  | 
| 38 38 | 
             
                  THREAD_LOCAL_KEY = :__GuardAgainstPhysicalDelete__thread_local_permission__
         | 
| 39 | 
            -
                  private_constant :THREAD_LOCAL_KEY | 
| 39 | 
            +
                  private_constant :THREAD_LOCAL_KEY
         | 
| 40 40 |  | 
| 41 41 | 
             
                  def physical_delete_permission
         | 
| 42 42 | 
             
                    Thread.current[THREAD_LOCAL_KEY] ||= Hash.new { |h,k| h[k] = 0 }
         | 
| @@ -44,6 +44,16 @@ module GuardAgainstPhysicalDelete | |
| 44 44 | 
             
                end
         | 
| 45 45 |  | 
| 46 46 | 
             
                module InstanceMethods
         | 
| 47 | 
            +
                  if ::ActiveRecord.version >= ::Gem::Version.new('5.2')
         | 
| 48 | 
            +
                    def _delete_row
         | 
| 49 | 
            +
                      unless self.class.delete_permitted?
         | 
| 50 | 
            +
                        raise ::GuardAgainstPhysicalDelete::PhysicalDeleteError, self.class.name
         | 
| 51 | 
            +
                      end
         | 
| 52 | 
            +
             | 
| 53 | 
            +
                      super
         | 
| 54 | 
            +
                    end
         | 
| 55 | 
            +
                  end
         | 
| 56 | 
            +
             | 
| 47 57 | 
             
                  def hard_delete
         | 
| 48 58 | 
             
                    self.class.physical_delete { destroy }
         | 
| 49 59 | 
             
                  end
         | 
| @@ -1,15 +1,16 @@ | |
| 1 1 | 
             
            module GuardAgainstPhysicalDelete
         | 
| 2 2 | 
             
              module Relation
         | 
| 3 | 
            -
                def self.included( | 
| 4 | 
            -
                   | 
| 5 | 
            -
             | 
| 6 | 
            -
             | 
| 7 | 
            -
             | 
| 8 | 
            -
             | 
| 9 | 
            -
             | 
| 3 | 
            +
                def self.included(base)
         | 
| 4 | 
            +
                  base.prepend MethodOverrides
         | 
| 5 | 
            +
                end
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                module MethodOverrides
         | 
| 8 | 
            +
                  def delete_all
         | 
| 9 | 
            +
                    unless klass.delete_permitted?
         | 
| 10 | 
            +
                      raise GuardAgainstPhysicalDelete::PhysicalDeleteError, klass.name
         | 
| 10 11 | 
             
                    end
         | 
| 11 12 |  | 
| 12 | 
            -
                     | 
| 13 | 
            +
                    super
         | 
| 13 14 | 
             
                  end
         | 
| 14 15 | 
             
                end
         | 
| 15 16 | 
             
              end
         | 
    
        data/lib/guard_against_physical_delete/support_counter_cache/associations/builder/belongs_to.rb
    CHANGED
    
    | @@ -5,51 +5,62 @@ module GuardAgainstPhysicalDelete | |
| 5 5 | 
             
                    module BelongsTo
         | 
| 6 6 | 
             
                      def self.included(obj)
         | 
| 7 7 | 
             
                        class << obj
         | 
| 8 | 
            +
                          prepend MethodOverrides
         | 
| 9 | 
            +
             | 
| 8 10 | 
             
                          private
         | 
| 9 | 
            -
                          def add_counter_cache_methods_with_logical_delete(mixin)
         | 
| 10 | 
            -
                            add_counter_cache_methods_without_logical_delete mixin
         | 
| 11 | 
            -
                            add_logical_delete_counter_cache_methods(mixin)
         | 
| 12 | 
            -
                          end
         | 
| 13 | 
            -
                          alias_method_chain :add_counter_cache_methods, :logical_delete
         | 
| 14 11 |  | 
| 15 12 | 
             
                          def add_logical_delete_counter_cache_methods(mixin)
         | 
| 16 13 | 
             
                            mixin.class_eval do
         | 
| 17 | 
            -
                              def  | 
| 18 | 
            -
                                 | 
| 19 | 
            -
             | 
| 20 | 
            -
             | 
| 21 | 
            -
             | 
| 22 | 
            -
             | 
| 23 | 
            -
                                 | 
| 24 | 
            -
             | 
| 14 | 
            +
                              def adjust_counter_caches_for_logical_deletion(reflection)
         | 
| 15 | 
            +
                                if attribute_before_last_save(logical_delete_column).nil? && read_attribute(logical_delete_column)
         | 
| 16 | 
            +
                                  reflection.klass.decrement_counter(
         | 
| 17 | 
            +
                                    reflection.counter_cache_column,
         | 
| 18 | 
            +
                                    attribute_before_last_save(reflection.foreign_key)
         | 
| 19 | 
            +
                                  )
         | 
| 20 | 
            +
                                elsif attribute_before_last_save(logical_delete_column) && read_attribute(logical_delete_column).nil?
         | 
| 21 | 
            +
                                  reflection.klass.increment_counter(
         | 
| 22 | 
            +
                                    reflection.counter_cache_column,
         | 
| 23 | 
            +
                                    attribute_before_last_save(reflection.foreign_key)
         | 
| 24 | 
            +
                                  )
         | 
| 25 | 
            +
                                end
         | 
| 25 26 | 
             
                              end
         | 
| 26 27 |  | 
| 27 | 
            -
                               | 
| 28 | 
            -
             | 
| 29 | 
            -
                                 | 
| 30 | 
            -
                                return  | 
| 31 | 
            -
                                 | 
| 32 | 
            -
             | 
| 33 | 
            -
                                 | 
| 34 | 
            -
             | 
| 28 | 
            +
                              # Polyfill for Rails < 5.1, not that it's perfectly compatible.
         | 
| 29 | 
            +
                              if ActiveRecord.version < Gem::Version.new('5.1.0')
         | 
| 30 | 
            +
                                # @param [#to_s] attr_name
         | 
| 31 | 
            +
                                # @return [Object]
         | 
| 32 | 
            +
                                def attribute_before_last_save(attr_name)
         | 
| 33 | 
            +
                                  __send__("#{attr_name}_was")
         | 
| 34 | 
            +
                                end
         | 
| 35 | 
            +
             | 
| 36 | 
            +
                                # @param [#to_s] attr_name
         | 
| 37 | 
            +
                                # @return [Boolean]
         | 
| 38 | 
            +
                                def saved_change_to_attribute?(attr_name)
         | 
| 39 | 
            +
                                  __send__("#{attr_name}_changed?")
         | 
| 40 | 
            +
                                end
         | 
| 35 41 | 
             
                              end
         | 
| 36 42 | 
             
                            end
         | 
| 43 | 
            +
             | 
| 37 44 | 
             
                            mixin.redefine_method("belongs_to_counter_cache_after_update_for_#{name}") do
         | 
| 38 45 | 
             
                              # do nothing
         | 
| 39 46 | 
             
                            end if mixin.method_defined?("belongs_to_counter_cache_after_update_for_#{name}")
         | 
| 40 47 | 
             
                          end
         | 
| 48 | 
            +
                        end
         | 
| 49 | 
            +
                      end
         | 
| 50 | 
            +
                    end
         | 
| 41 51 |  | 
| 42 | 
            -
             | 
| 43 | 
            -
             | 
| 52 | 
            +
                    module MethodOverrides
         | 
| 53 | 
            +
                      private
         | 
| 44 54 |  | 
| 45 | 
            -
             | 
| 55 | 
            +
                      def add_counter_cache_callbacks(model, reflection)
         | 
| 56 | 
            +
                        super(model, reflection)
         | 
| 46 57 |  | 
| 47 | 
            -
             | 
| 48 | 
            -
             | 
| 49 | 
            -
             | 
| 50 | 
            -
             | 
| 51 | 
            -
             | 
| 52 | 
            -
                           | 
| 58 | 
            +
                        return unless model.logical_delete?
         | 
| 59 | 
            +
             | 
| 60 | 
            +
                        add_logical_delete_counter_cache_methods(model)
         | 
| 61 | 
            +
             | 
| 62 | 
            +
                        model.after_update -> record do
         | 
| 63 | 
            +
                          record.adjust_counter_caches_for_logical_deletion(reflection)
         | 
| 53 64 | 
             
                        end
         | 
| 54 65 | 
             
                      end
         | 
| 55 66 | 
             
                    end
         | 
| @@ -1,12 +1 @@ | |
| 1 | 
            -
             | 
| 2 | 
            -
              require 'guard_against_physical_delete/support_counter_cache/associations/builder/belongs_to'
         | 
| 3 | 
            -
              ActiveRecord::Associations::Builder::BelongsTo.send(:include, GuardAgainstPhysicalDelete::SupportCounterCache::Associations::Builder::BelongsTo)
         | 
| 4 | 
            -
            elsif ActiveRecord::VERSION::STRING >= "3.2"
         | 
| 5 | 
            -
              require 'guard_against_physical_delete/support_counter_cache/3.2_and_4.0/associations/builder/belongs_to'
         | 
| 6 | 
            -
              ActiveRecord::Associations::Builder::BelongsTo.send(:include, GuardAgainstPhysicalDelete::SupportCounterCache::Associations::Builder::BelongsTo)
         | 
| 7 | 
            -
            elsif ActiveRecord::VERSION::STRING == "3.0.10"
         | 
| 8 | 
            -
              require 'guard_against_physical_delete/support_counter_cache/3.0.10/associations'
         | 
| 9 | 
            -
              ActiveRecord::Base.send(:include, GuardAgainstPhysicalDelete::SupportCounterCache::Associations)
         | 
| 10 | 
            -
            else
         | 
| 11 | 
            -
              raise "guard_against_physical_delete doesn't support ActiveRecord version #{ActiveRecord::VERSION::STRING}"
         | 
| 12 | 
            -
            end
         | 
| 1 | 
            +
            require 'guard_against_physical_delete/support_counter_cache/associations/builder/belongs_to'
         | 
| @@ -2,10 +2,10 @@ require 'active_record' | |
| 2 2 | 
             
            require 'guard_against_physical_delete/physical_delete_error'
         | 
| 3 3 | 
             
            require 'guard_against_physical_delete/relation'
         | 
| 4 4 | 
             
            require 'guard_against_physical_delete/base'
         | 
| 5 | 
            +
            require 'guard_against_physical_delete/support_counter_cache'
         | 
| 5 6 |  | 
| 6 7 | 
             
            ActiveSupport.on_load :active_record do
         | 
| 7 8 | 
             
              ActiveRecord::Base.send(:include, GuardAgainstPhysicalDelete::Base)
         | 
| 8 9 | 
             
              ActiveRecord::Relation.send(:include, GuardAgainstPhysicalDelete::Relation)
         | 
| 9 | 
            -
             | 
| 10 | 
            -
              require 'guard_against_physical_delete/support_counter_cache'
         | 
| 10 | 
            +
              ActiveRecord::Associations::Builder::BelongsTo.send(:include, GuardAgainstPhysicalDelete::SupportCounterCache::Associations::Builder::BelongsTo)
         | 
| 11 11 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,11 +1,11 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: guard_against_physical_delete
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1. | 
| 4 | 
            +
              version: 2.1.1
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - MORITA shingo
         | 
| 8 | 
            -
            autorequire: | 
| 8 | 
            +
            autorequire:
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 11 | 
             
            date: 2012-03-06 00:00:00.000000000 Z
         | 
| @@ -16,70 +16,62 @@ dependencies: | |
| 16 16 | 
             
                requirements:
         | 
| 17 17 | 
             
                - - ">="
         | 
| 18 18 | 
             
                  - !ruby/object:Gem::Version
         | 
| 19 | 
            -
                    version:  | 
| 19 | 
            +
                    version: '5'
         | 
| 20 | 
            +
                - - "<"
         | 
| 21 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 22 | 
            +
                    version: '6.2'
         | 
| 20 23 | 
             
              type: :runtime
         | 
| 21 24 | 
             
              prerelease: false
         | 
| 22 25 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 23 26 | 
             
                requirements:
         | 
| 24 27 | 
             
                - - ">="
         | 
| 25 28 | 
             
                  - !ruby/object:Gem::Version
         | 
| 26 | 
            -
                    version:  | 
| 29 | 
            +
                    version: '5'
         | 
| 30 | 
            +
                - - "<"
         | 
| 31 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 32 | 
            +
                    version: '6.2'
         | 
| 27 33 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 28 34 | 
             
              name: rake
         | 
| 29 35 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 30 36 | 
             
                requirements:
         | 
| 31 | 
            -
                - - " | 
| 37 | 
            +
                - - "~>"
         | 
| 32 38 | 
             
                  - !ruby/object:Gem::Version
         | 
| 33 | 
            -
                    version: ' | 
| 39 | 
            +
                    version: '13'
         | 
| 34 40 | 
             
              type: :development
         | 
| 35 41 | 
             
              prerelease: false
         | 
| 36 42 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 37 43 | 
             
                requirements:
         | 
| 38 | 
            -
                - - " | 
| 44 | 
            +
                - - "~>"
         | 
| 39 45 | 
             
                  - !ruby/object:Gem::Version
         | 
| 40 | 
            -
                    version: ' | 
| 46 | 
            +
                    version: '13'
         | 
| 41 47 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 42 48 | 
             
              name: rspec
         | 
| 43 49 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 44 50 | 
             
                requirements:
         | 
| 45 | 
            -
                - - " | 
| 51 | 
            +
                - - "~>"
         | 
| 46 52 | 
             
                  - !ruby/object:Gem::Version
         | 
| 47 | 
            -
                    version: ' | 
| 53 | 
            +
                    version: '3'
         | 
| 48 54 | 
             
              type: :development
         | 
| 49 55 | 
             
              prerelease: false
         | 
| 50 56 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 51 57 | 
             
                requirements:
         | 
| 52 | 
            -
                - - " | 
| 58 | 
            +
                - - "~>"
         | 
| 53 59 | 
             
                  - !ruby/object:Gem::Version
         | 
| 54 | 
            -
                    version: ' | 
| 60 | 
            +
                    version: '3'
         | 
| 55 61 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 56 62 | 
             
              name: sqlite3
         | 
| 57 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 58 | 
            -
                requirements:
         | 
| 59 | 
            -
                - - ">="
         | 
| 60 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 61 | 
            -
                    version: '0'
         | 
| 62 | 
            -
              type: :development
         | 
| 63 | 
            -
              prerelease: false
         | 
| 64 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 65 | 
            -
                requirements:
         | 
| 66 | 
            -
                - - ">="
         | 
| 67 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 68 | 
            -
                    version: '0'
         | 
| 69 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 70 | 
            -
              name: rdoc
         | 
| 71 63 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 72 64 | 
             
                requirements:
         | 
| 73 65 | 
             
                - - "~>"
         | 
| 74 66 | 
             
                  - !ruby/object:Gem::Version
         | 
| 75 | 
            -
                    version: ' | 
| 67 | 
            +
                    version: '1.4'
         | 
| 76 68 | 
             
              type: :development
         | 
| 77 69 | 
             
              prerelease: false
         | 
| 78 70 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 79 71 | 
             
                requirements:
         | 
| 80 72 | 
             
                - - "~>"
         | 
| 81 73 | 
             
                  - !ruby/object:Gem::Version
         | 
| 82 | 
            -
                    version: ' | 
| 74 | 
            +
                    version: '1.4'
         | 
| 83 75 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 84 76 | 
             
              name: bundler
         | 
| 85 77 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -136,32 +128,45 @@ dependencies: | |
| 136 128 | 
             
                - - ">="
         | 
| 137 129 | 
             
                  - !ruby/object:Gem::Version
         | 
| 138 130 | 
             
                    version: '0'
         | 
| 139 | 
            -
            description: | 
| 131 | 
            +
            description:
         | 
| 140 132 | 
             
            email: morita@cookpad.com
         | 
| 141 133 | 
             
            executables: []
         | 
| 142 134 | 
             
            extensions: []
         | 
| 143 | 
            -
            extra_rdoc_files:
         | 
| 144 | 
            -
            - README.rdoc
         | 
| 135 | 
            +
            extra_rdoc_files: []
         | 
| 145 136 | 
             
            files:
         | 
| 137 | 
            +
            - ".github/workflows/master_and_pr.yml"
         | 
| 146 138 | 
             
            - ".gitignore"
         | 
| 147 | 
            -
            -  | 
| 148 | 
            -
            - Gemfile
         | 
| 139 | 
            +
            - CHANGELOG.md
         | 
| 149 140 | 
             
            - License.txt
         | 
| 150 | 
            -
            - README. | 
| 141 | 
            +
            - README.md
         | 
| 151 142 | 
             
            - Rakefile
         | 
| 143 | 
            +
            - bin/setup
         | 
| 144 | 
            +
            - bin/test
         | 
| 145 | 
            +
            - gemfiles/Gemfile_rails_5.0.rb
         | 
| 146 | 
            +
            - gemfiles/Gemfile_rails_5.0.rb.lock
         | 
| 147 | 
            +
            - gemfiles/Gemfile_rails_5.1.rb
         | 
| 148 | 
            +
            - gemfiles/Gemfile_rails_5.1.rb.lock
         | 
| 149 | 
            +
            - gemfiles/Gemfile_rails_5.2.rb
         | 
| 150 | 
            +
            - gemfiles/Gemfile_rails_5.2.rb.lock
         | 
| 151 | 
            +
            - gemfiles/Gemfile_rails_6.0.rb
         | 
| 152 | 
            +
            - gemfiles/Gemfile_rails_6.0.rb.lock
         | 
| 153 | 
            +
            - gemfiles/Gemfile_rails_6.1.rb
         | 
| 154 | 
            +
            - gemfiles/Gemfile_rails_6.1.rb.lock
         | 
| 152 155 | 
             
            - guard_against_physical_delete.gemspec
         | 
| 153 156 | 
             
            - lib/guard_against_physical_delete.rb
         | 
| 154 157 | 
             
            - lib/guard_against_physical_delete/base.rb
         | 
| 155 158 | 
             
            - lib/guard_against_physical_delete/physical_delete_error.rb
         | 
| 156 159 | 
             
            - lib/guard_against_physical_delete/relation.rb
         | 
| 157 160 | 
             
            - lib/guard_against_physical_delete/support_counter_cache.rb
         | 
| 158 | 
            -
            - lib/guard_against_physical_delete/support_counter_cache/3.0.10/associations.rb
         | 
| 159 | 
            -
            - lib/guard_against_physical_delete/support_counter_cache/3.2_and_4.0/associations/builder/belongs_to.rb
         | 
| 160 161 | 
             
            - lib/guard_against_physical_delete/support_counter_cache/associations/builder/belongs_to.rb
         | 
| 162 | 
            +
            - lib/guard_against_physical_delete/version.rb
         | 
| 161 163 | 
             
            homepage: http://github.com/cookpad/guard_against_physical_delete
         | 
| 162 164 | 
             
            licenses: []
         | 
| 163 | 
            -
            metadata: | 
| 164 | 
            -
             | 
| 165 | 
            +
            metadata:
         | 
| 166 | 
            +
              changelog_uri: http://github.com/cookpad/guard_against_physical_delete/blob/master/CHANGELOG.md
         | 
| 167 | 
            +
              homepage_uri: http://github.com/cookpad/guard_against_physical_delete
         | 
| 168 | 
            +
              source_code_uri: http://github.com/cookpad/guard_against_physical_delete
         | 
| 169 | 
            +
            post_install_message:
         | 
| 165 170 | 
             
            rdoc_options: []
         | 
| 166 171 | 
             
            require_paths:
         | 
| 167 172 | 
             
            - lib
         | 
| @@ -176,9 +181,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 176 181 | 
             
                - !ruby/object:Gem::Version
         | 
| 177 182 | 
             
                  version: '0'
         | 
| 178 183 | 
             
            requirements: []
         | 
| 179 | 
            -
             | 
| 180 | 
            -
             | 
| 181 | 
            -
            signing_key: 
         | 
| 184 | 
            +
            rubygems_version: 3.3.7
         | 
| 185 | 
            +
            signing_key:
         | 
| 182 186 | 
             
            specification_version: 4
         | 
| 183 | 
            -
            summary:  | 
| 187 | 
            +
            summary: A monkey patch for ActiveRecord to prevent physical deletion.
         | 
| 184 188 | 
             
            test_files: []
         | 
    
        data/.travis.yml
    DELETED
    
    
    
        data/Gemfile
    DELETED
    
    
    
        data/README.rdoc
    DELETED
    
    | @@ -1,17 +0,0 @@ | |
| 1 | 
            -
            = guard_against_physical_delete
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            guard_against_physical_delete is monkey patch for ActiveRecord.
         | 
| 4 | 
            -
            This patch prevent deleting record physically.
         | 
| 5 | 
            -
            set logical delete column name. (default is :deleted_at)
         | 
| 6 | 
            -
              Logical.logical_delete_column = :removed_at
         | 
| 7 | 
            -
              Logical.first.delete #=> raise GuardAgainstPhysicalDelete::PhysicalDeleteError
         | 
| 8 | 
            -
              Logical.physical_delete { Logical.first.delete } #=> allow physical_delete
         | 
| 9 | 
            -
             | 
| 10 | 
            -
            == Support
         | 
| 11 | 
            -
            active_record 3.0.10, >= 3.2
         | 
| 12 | 
            -
             | 
| 13 | 
            -
            == Copyright
         | 
| 14 | 
            -
             | 
| 15 | 
            -
            Copyright (c) 2012 morita shingo. See License.txt for
         | 
| 16 | 
            -
            further details.
         | 
| 17 | 
            -
             | 
| @@ -1,43 +0,0 @@ | |
| 1 | 
            -
            module GuardAgainstPhysicalDelete
         | 
| 2 | 
            -
              module SupportCounterCache
         | 
| 3 | 
            -
                module Associations
         | 
| 4 | 
            -
                  def self.included(obj)
         | 
| 5 | 
            -
                    class << obj
         | 
| 6 | 
            -
                      def add_counter_cache_callbacks_with_logical_delete(reflection)
         | 
| 7 | 
            -
                        add_counter_cache_callbacks_without_logical_delete(reflection)
         | 
| 8 | 
            -
                        return unless logical_delete?
         | 
| 9 | 
            -
                        add_logical_delete_counter_cache_callback(reflection)
         | 
| 10 | 
            -
                      end
         | 
| 11 | 
            -
                      alias_method_chain :add_counter_cache_callbacks, :logical_delete
         | 
| 12 | 
            -
             | 
| 13 | 
            -
                      def add_logical_delete_counter_cache_callback(reflection)
         | 
| 14 | 
            -
                        cache_column = reflection.counter_cache_column
         | 
| 15 | 
            -
             | 
| 16 | 
            -
                        logical_delete_method_name = "belongs_to_counter_cache_before_logical_delete_for_#{reflection.name}".to_sym
         | 
| 17 | 
            -
                        define_method(logical_delete_method_name) do
         | 
| 18 | 
            -
                          delete_column = self.logical_delete_column
         | 
| 19 | 
            -
                          next unless send("#{delete_column}_changed?")
         | 
| 20 | 
            -
                          next unless send("#{delete_column}_was").nil?
         | 
| 21 | 
            -
                          association = send(reflection.name)
         | 
| 22 | 
            -
                          association.class.decrement_counter(cache_column, association.id) unless association.nil?
         | 
| 23 | 
            -
                        end
         | 
| 24 | 
            -
             | 
| 25 | 
            -
                        revive_method_name = "belongs_to_counter_cache_before_revive_for_#{reflection.name}".to_sym
         | 
| 26 | 
            -
                        define_method(revive_method_name) do
         | 
| 27 | 
            -
                          delete_column = self.logical_delete_column
         | 
| 28 | 
            -
                          next unless send("#{delete_column}_changed?")
         | 
| 29 | 
            -
                          next if send("#{delete_column}_was").nil?
         | 
| 30 | 
            -
                          next unless send(delete_column).nil?
         | 
| 31 | 
            -
             | 
| 32 | 
            -
                          clear_association_cache
         | 
| 33 | 
            -
                          association = send(reflection.name)
         | 
| 34 | 
            -
                          association.class.increment_counter(cache_column, association.id) unless association.nil?
         | 
| 35 | 
            -
                        end
         | 
| 36 | 
            -
             | 
| 37 | 
            -
                        before_update(logical_delete_method_name, revive_method_name)
         | 
| 38 | 
            -
                      end
         | 
| 39 | 
            -
                    end
         | 
| 40 | 
            -
                  end
         | 
| 41 | 
            -
                end
         | 
| 42 | 
            -
              end
         | 
| 43 | 
            -
            end
         | 
| @@ -1,50 +0,0 @@ | |
| 1 | 
            -
            module GuardAgainstPhysicalDelete
         | 
| 2 | 
            -
              module SupportCounterCache
         | 
| 3 | 
            -
                module Associations
         | 
| 4 | 
            -
                  module Builder
         | 
| 5 | 
            -
                    module BelongsTo
         | 
| 6 | 
            -
                      def self.included(obj)
         | 
| 7 | 
            -
                        obj.class_eval do
         | 
| 8 | 
            -
                          def add_counter_cache_callbacks_with_logical_delete(reflection)
         | 
| 9 | 
            -
                            add_counter_cache_callbacks_without_logical_delete(reflection)
         | 
| 10 | 
            -
                            return unless model.logical_delete?
         | 
| 11 | 
            -
                            add_logical_delete_counter_cache_callback(reflection)
         | 
| 12 | 
            -
                          end
         | 
| 13 | 
            -
                          alias_method_chain :add_counter_cache_callbacks, :logical_delete
         | 
| 14 | 
            -
             | 
| 15 | 
            -
                          def add_logical_delete_counter_cache_callback(reflection)
         | 
| 16 | 
            -
                            cache_column = reflection.counter_cache_column
         | 
| 17 | 
            -
                            name = self.name
         | 
| 18 | 
            -
             | 
| 19 | 
            -
                            logical_delete_method_name = "belongs_to_counter_cache_after_logical_delete_for_#{name}".to_sym
         | 
| 20 | 
            -
                            mixin.redefine_method(logical_delete_method_name) do
         | 
| 21 | 
            -
                              delete_column = self.logical_delete_column
         | 
| 22 | 
            -
                              next unless send("#{delete_column}_changed?")
         | 
| 23 | 
            -
                              next unless send("#{delete_column}_was").nil?
         | 
| 24 | 
            -
                              record = send(name)
         | 
| 25 | 
            -
                              record.class.decrement_counter(cache_column, record.id) unless record.nil?
         | 
| 26 | 
            -
                            end
         | 
| 27 | 
            -
             | 
| 28 | 
            -
                            mixin.redefine_method("belongs_to_counter_cache_after_update_for_#{name}") do
         | 
| 29 | 
            -
                              # do nothing
         | 
| 30 | 
            -
                            end if mixin.method_defined?("belongs_to_counter_cache_after_update_for_#{name}")
         | 
| 31 | 
            -
             | 
| 32 | 
            -
                            revive_method_name = "belongs_to_counter_cache_after_revive_for_#{name}".to_sym
         | 
| 33 | 
            -
             | 
| 34 | 
            -
                            mixin.redefine_method(revive_method_name) do
         | 
| 35 | 
            -
                              delete_column = self.logical_delete_column
         | 
| 36 | 
            -
                              next unless send("#{delete_column}_changed?")
         | 
| 37 | 
            -
                              next if send("#{delete_column}_was").nil?
         | 
| 38 | 
            -
                              next unless send(delete_column).nil?
         | 
| 39 | 
            -
                              record = send(name)
         | 
| 40 | 
            -
                              record.class.increment_counter(cache_column, record.id) unless record.nil?
         | 
| 41 | 
            -
                            end
         | 
| 42 | 
            -
                            model.after_update(logical_delete_method_name, revive_method_name)
         | 
| 43 | 
            -
                          end
         | 
| 44 | 
            -
                        end
         | 
| 45 | 
            -
                      end
         | 
| 46 | 
            -
                    end
         | 
| 47 | 
            -
                  end
         | 
| 48 | 
            -
                end
         | 
| 49 | 
            -
              end
         | 
| 50 | 
            -
            end
         |