second_level_cache 2.3.3 → 2.4.0
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/CHANGELOG.md +29 -22
- data/Gemfile +4 -2
- data/README.md +7 -1
- data/Rakefile +6 -4
- data/lib/second_level_cache.rb +7 -5
- data/lib/second_level_cache/active_record.rb +15 -10
- data/lib/second_level_cache/active_record/base.rb +2 -0
- data/lib/second_level_cache/active_record/belongs_to_association.rb +2 -0
- data/lib/second_level_cache/active_record/core.rb +2 -0
- data/lib/second_level_cache/active_record/fetch_by_uniq_key.rb +5 -3
- data/lib/second_level_cache/active_record/finder_methods.rb +3 -1
- data/lib/second_level_cache/active_record/has_one_association.rb +2 -0
- data/lib/second_level_cache/active_record/persistence.rb +2 -0
- data/lib/second_level_cache/active_record/preloader.rb +7 -4
- data/lib/second_level_cache/config.rb +3 -1
- data/lib/second_level_cache/mixin.rb +3 -1
- data/lib/second_level_cache/record_marshal.rb +2 -0
- data/lib/second_level_cache/record_relation.rb +2 -0
- data/lib/second_level_cache/version.rb +1 -1
- data/second_level_cache.gemspec +4 -4
- data/test/active_record_test_case_helper.rb +7 -5
- data/test/base_test.rb +6 -4
- data/test/belongs_to_association_test.rb +4 -2
- data/test/enum_attr_test.rb +6 -4
- data/test/fetch_by_uniq_key_test.rb +15 -13
- data/test/finder_methods_test.rb +6 -4
- data/test/has_one_association_test.rb +10 -8
- data/test/model/account.rb +2 -0
- data/test/model/animal.rb +2 -0
- data/test/model/book.rb +2 -0
- data/test/model/image.rb +2 -0
- data/test/model/order.rb +2 -0
- data/test/model/order_item.rb +2 -0
- data/test/model/post.rb +2 -0
- data/test/model/topic.rb +2 -0
- data/test/model/user.rb +6 -4
- data/test/persistence_test.rb +12 -10
- data/test/polymorphic_association_test.rb +4 -2
- data/test/preloader_non_integer_test.rb +17 -14
- data/test/preloader_test.rb +13 -10
- data/test/record_marshal_test.rb +17 -15
- data/test/require_test.rb +7 -5
- data/test/second_level_cache_test.rb +5 -3
- data/test/single_table_inheritance_test.rb +3 -1
- data/test/test_helper.rb +19 -17
- metadata +19 -19
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 | 
            -
             | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 2 | 
            +
            SHA256:
         | 
| 3 | 
            +
              metadata.gz: d4a105d17a40787d4a614e3870220cc480befc73713872f7d427f009d36c7eea
         | 
| 4 | 
            +
              data.tar.gz: 1488f0f970f62dc8605d4a669b2b8b9e0b88cc1eb9e7f26961ab2611983b1f41
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: f240c1fb0e9388e873e8fb40506dca51f12c867447ef091d5d88adb828f1a6d53a151be1aab047028172df4c298a4a691fdc3792d1e3df14c53d6c024557c73c
         | 
| 7 | 
            +
              data.tar.gz: 44d71c5531ef6c704303b9e02173b439feff1a0884120b3bd56e07c96a6482baba8218ba1e42201f1ca0a06a1e344440390b0944e5833266e1d04bf6fc7ea79a
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    | @@ -1,56 +1,63 @@ | |
| 1 | 
            +
            2.4.0
         | 
| 2 | 
            +
            ---------
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            - Fix for support Rails 5.2;
         | 
| 5 | 
            +
            - Now second_level_cache 2.4.x has required Rails > 5.2;
         | 
| 6 | 
            +
            - Enable `frozen_string_literal = true`;
         | 
| 7 | 
            +
             | 
| 1 8 | 
             
            2.3.1
         | 
| 2 | 
            -
             | 
| 9 | 
            +
            -------
         | 
| 3 10 |  | 
| 4 11 | 
             
            - Fix some cases will raise "uninitialized constant SecondLevelCache::Mixin" error. (#66)
         | 
| 5 12 |  | 
| 6 13 | 
             
            2.3.0
         | 
| 7 | 
            -
             | 
| 14 | 
            +
            -------
         | 
| 8 15 |  | 
| 9 16 | 
             
            * Use Model schema digest as cache_version, so you don't need set `:version` option now. (#60)
         | 
| 10 17 | 
             
            * Fix `store` serialize option (#62)
         | 
| 11 18 | 
             
            * Remove `acts_as_cached` method now! Please use `second_level_cache`. (#59)
         | 
| 12 19 |  | 
| 13 20 | 
             
            2.2.7
         | 
| 14 | 
            -
             | 
| 21 | 
            +
            -------
         | 
| 15 22 |  | 
| 16 23 | 
             
            * Use `second_level_cache` instead of `acts_as_cached` method to setup in model. (#56)
         | 
| 17 24 |  | 
| 18 25 | 
             
            2.2.6
         | 
| 19 | 
            -
             | 
| 26 | 
            +
            -------
         | 
| 20 27 |  | 
| 21 28 | 
             
            * Fix warning in Ruby 2.4.0. (#54)
         | 
| 22 29 |  | 
| 23 30 | 
             
            2.2.5
         | 
| 24 | 
            -
             | 
| 31 | 
            +
            -------
         | 
| 25 32 |  | 
| 26 33 | 
             
            * Flush cache when belongs_to keys are changed; (#51)
         | 
| 27 34 | 
             
            * Fix #52 in ActiveRecord 5.0.1, `records_for` API has changed, it's want an `ActiveRecord::Relation` instance to include a `load` method, but second_level_cached returned an Array. (#53)
         | 
| 28 35 | 
             
            * Fix Rails 5.0.1 `@second_level_cache_enabled` not define warning.
         | 
| 29 36 |  | 
| 30 37 | 
             
            2.2.4
         | 
| 31 | 
            -
             | 
| 38 | 
            +
            -------
         | 
| 32 39 |  | 
| 33 40 | 
             
            * Fix update conflict in same thread or request context for Cache object. (#49)
         | 
| 34 41 |  | 
| 35 42 | 
             
            2.2.3
         | 
| 36 | 
            -
             | 
| 43 | 
            +
            -------
         | 
| 37 44 |  | 
| 38 45 | 
             
            * Fix issue with Rails enums. (#43)
         | 
| 39 46 | 
             
            * Fix to update cache on `update_columns`, `update_attribute`. (#43)
         | 
| 40 47 |  | 
| 41 48 | 
             
            2.2.2
         | 
| 42 | 
            -
             | 
| 49 | 
            +
            -------
         | 
| 43 50 |  | 
| 44 51 | 
             
            * Add `where(id: n).first`, `where(id: n).last` hit cache support. This improve will avoid some gems query database, for example: [devise](https://github.com/plataformatec/devise) `current_user` method.
         | 
| 45 52 |  | 
| 46 53 | 
             
            2.2.1
         | 
| 47 | 
            -
             | 
| 54 | 
            +
            -------
         | 
| 48 55 |  | 
| 49 56 | 
             
            * ActiveRecord 5 ready! Do not support ActiveRecord 4 and lower versions now (use second_level_cache 2.1.x).
         | 
| 50 57 | 
             
            * Requirement Ruby 2.3+.
         | 
| 51 58 |  | 
| 52 59 | 
             
            2.0.0
         | 
| 53 | 
            -
             | 
| 60 | 
            +
            -------
         | 
| 54 61 |  | 
| 55 62 | 
             
            * ActiveRecord 4 ready!
         | 
| 56 63 | 
             
            * read multi support for preloading. `Article.includes(:user).limit(5).to_a` will fetch all articles' users from cache preferentially.
         | 
| @@ -58,65 +65,65 @@ | |
| 58 65 | 
             
            * remove support for find_by_xx which will be removed in Rails 4.1
         | 
| 59 66 |  | 
| 60 67 | 
             
            1.6.2
         | 
| 61 | 
            -
             | 
| 68 | 
            +
            -------
         | 
| 62 69 |  | 
| 63 70 | 
             
            * [can disable/enable fetch_by_uinq_key method]
         | 
| 64 71 | 
             
            * [Fix Bug: serialized attribute columns marshal issue #11]
         | 
| 65 72 |  | 
| 66 73 | 
             
            1.6.1
         | 
| 67 | 
            -
             | 
| 74 | 
            +
            -------
         | 
| 68 75 |  | 
| 69 76 | 
             
            * [Fix bug: undefined method `select_all_column?' for []:ActiveRecord::Relation] by sishen
         | 
| 70 77 |  | 
| 71 78 | 
             
            1.6.0
         | 
| 72 | 
            -
             | 
| 79 | 
            +
            -------
         | 
| 73 80 |  | 
| 74 81 | 
             
            * [write through cache]
         | 
| 75 82 | 
             
            * [disable SecondLevelCache for spicial model]
         | 
| 76 83 | 
             
            * [only cache `SELECT *` query]
         | 
| 77 84 |  | 
| 78 85 | 
             
            1.5.1
         | 
| 79 | 
            -
             | 
| 86 | 
            +
            -------
         | 
| 80 87 |  | 
| 81 88 | 
             
            * [use new marshal machanism to avoid clear assocation cache manually]
         | 
| 82 89 |  | 
| 83 90 | 
             
            1.5.0
         | 
| 84 | 
            -
             | 
| 91 | 
            +
            -------
         | 
| 85 92 |  | 
| 86 93 | 
             
            * [add cache version to quick clear cache for special model]
         | 
| 87 94 |  | 
| 88 95 | 
             
            1.4.1
         | 
| 89 | 
            -
             | 
| 96 | 
            +
            -------
         | 
| 90 97 |  | 
| 91 98 | 
             
            * [fix errors when belongs_to association return nil]
         | 
| 92 99 |  | 
| 93 100 | 
             
            1.4.0
         | 
| 94 | 
            -
             | 
| 101 | 
            +
            -------
         | 
| 95 102 |  | 
| 96 103 | 
             
            * [cache has one assciation]
         | 
| 97 104 |  | 
| 98 105 | 
             
            1.3.2
         | 
| 99 | 
            -
             | 
| 106 | 
            +
            -------
         | 
| 100 107 |  | 
| 101 108 | 
             
            * [fix has one assciation issue]
         | 
| 102 109 |  | 
| 103 110 | 
             
            1.3.1
         | 
| 104 | 
            -
             | 
| 111 | 
            +
            -------
         | 
| 105 112 |  | 
| 106 113 | 
             
            * [clean cache after update_column/increment!/decrement!]
         | 
| 107 114 |  | 
| 108 115 | 
             
            1.3.0
         | 
| 109 | 
            -
             | 
| 116 | 
            +
            -------
         | 
| 110 117 |  | 
| 111 118 | 
             
            * [clean cache after touch]
         | 
| 112 119 |  | 
| 113 120 | 
             
            1.2.1
         | 
| 114 | 
            -
             | 
| 121 | 
            +
            -------
         | 
| 115 122 |  | 
| 116 123 | 
             
            * [fix polymorphic association bug]
         | 
| 117 124 |  | 
| 118 125 | 
             
            1.2.0
         | 
| 119 | 
            -
             | 
| 126 | 
            +
            -------
         | 
| 120 127 |  | 
| 121 128 | 
             
            * [clear cache after update_counters](https://github.com/csdn-dev/second_level_cache/commit/240dde81199124092e0e8ad0500c167ac146e301)
         | 
| 122 129 |  | 
    
        data/Gemfile
    CHANGED
    
    
    
        data/README.md
    CHANGED
    
    | @@ -16,7 +16,13 @@ Write-Through: As objects are created, updated, and deleted, all of the caches a | |
| 16 16 |  | 
| 17 17 | 
             
            In your gem file:
         | 
| 18 18 |  | 
| 19 | 
            -
            ActiveRecord 5:
         | 
| 19 | 
            +
            ActiveRecord 5.2:
         | 
| 20 | 
            +
             | 
| 21 | 
            +
            ```ruby
         | 
| 22 | 
            +
            gem 'second_level_cache', '~> 2.4.0'
         | 
| 23 | 
            +
            ```
         | 
| 24 | 
            +
             | 
| 25 | 
            +
            ActiveRecord 5.0.x, 5.1.x:
         | 
| 20 26 |  | 
| 21 27 | 
             
            ```ruby
         | 
| 22 28 | 
             
            gem 'second_level_cache', '~> 2.3.0'
         | 
    
        data/Rakefile
    CHANGED
    
    | @@ -1,10 +1,12 @@ | |
| 1 1 | 
             
            #!/usr/bin/env rake
         | 
| 2 | 
            -
             | 
| 3 | 
            -
             | 
| 2 | 
            +
            # frozen_string_literal: true
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            require "bundler/gem_tasks"
         | 
| 5 | 
            +
            require "rake/testtask"
         | 
| 4 6 |  | 
| 5 7 | 
             
            task default: :test
         | 
| 6 8 |  | 
| 7 9 | 
             
            Rake::TestTask.new do |t|
         | 
| 8 | 
            -
              t.libs <<  | 
| 9 | 
            -
              t.test_files = FileList[ | 
| 10 | 
            +
              t.libs << "lib" << "test"
         | 
| 11 | 
            +
              t.test_files = FileList["test/**/*_test.rb"]
         | 
| 10 12 | 
             
            end
         | 
    
        data/lib/second_level_cache.rb
    CHANGED
    
    | @@ -1,8 +1,10 @@ | |
| 1 | 
            -
             | 
| 2 | 
            -
             | 
| 3 | 
            -
            require  | 
| 4 | 
            -
            require  | 
| 5 | 
            -
            require  | 
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require "active_support/all"
         | 
| 4 | 
            +
            require "second_level_cache/config"
         | 
| 5 | 
            +
            require "second_level_cache/record_marshal"
         | 
| 6 | 
            +
            require "second_level_cache/record_relation"
         | 
| 7 | 
            +
            require "second_level_cache/active_record"
         | 
| 6 8 |  | 
| 7 9 | 
             
            module SecondLevelCache
         | 
| 8 10 | 
             
              def self.configure
         | 
| @@ -1,12 +1,14 @@ | |
| 1 | 
            -
             | 
| 2 | 
            -
             | 
| 3 | 
            -
            require  | 
| 4 | 
            -
            require  | 
| 5 | 
            -
            require  | 
| 6 | 
            -
            require  | 
| 7 | 
            -
            require  | 
| 8 | 
            -
            require  | 
| 9 | 
            -
            require  | 
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require "second_level_cache/mixin"
         | 
| 4 | 
            +
            require "second_level_cache/active_record/base"
         | 
| 5 | 
            +
            require "second_level_cache/active_record/core"
         | 
| 6 | 
            +
            require "second_level_cache/active_record/fetch_by_uniq_key"
         | 
| 7 | 
            +
            require "second_level_cache/active_record/finder_methods"
         | 
| 8 | 
            +
            require "second_level_cache/active_record/persistence"
         | 
| 9 | 
            +
            require "second_level_cache/active_record/belongs_to_association"
         | 
| 10 | 
            +
            require "second_level_cache/active_record/has_one_association"
         | 
| 11 | 
            +
            require "second_level_cache/active_record/preloader"
         | 
| 10 12 |  | 
| 11 13 | 
             
            # http://api.rubyonrails.org/classes/ActiveSupport/LazyLoadHooks.html
         | 
| 12 14 | 
             
            # ActiveSupport.run_load_hooks(:active_record, ActiveRecord::Base)
         | 
| @@ -18,5 +20,8 @@ ActiveSupport.on_load(:active_record) do | |
| 18 20 |  | 
| 19 21 | 
             
              ActiveRecord::Associations::BelongsToAssociation.send(:prepend, SecondLevelCache::ActiveRecord::Associations::BelongsToAssociation)
         | 
| 20 22 | 
             
              ActiveRecord::Associations::HasOneAssociation.send(:prepend, SecondLevelCache::ActiveRecord::Associations::HasOneAssociation)
         | 
| 21 | 
            -
             | 
| 23 | 
            +
             | 
| 24 | 
            +
              # Rails 5.2 has removed ActiveRecord::Associations::Preloader::BelongsTo
         | 
| 25 | 
            +
              # https://github.com/rails/rails/pull/31079
         | 
| 26 | 
            +
              ActiveRecord::Associations::Preloader::Association.send(:prepend, SecondLevelCache::ActiveRecord::Associations::Preloader::BelongsTo)
         | 
| 22 27 | 
             
            end
         | 
| @@ -1,3 +1,5 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 1 3 | 
             
            module SecondLevelCache
         | 
| 2 4 | 
             
              module ActiveRecord
         | 
| 3 5 | 
             
                module FetchByUniqKey
         | 
| @@ -7,7 +9,7 @@ module SecondLevelCache | |
| 7 9 | 
             
                    if obj_id
         | 
| 8 10 | 
             
                      begin
         | 
| 9 11 | 
             
                        return find(obj_id)
         | 
| 10 | 
            -
                      rescue
         | 
| 12 | 
            +
                      rescue StandardError
         | 
| 11 13 | 
             
                        return nil
         | 
| 12 14 | 
             
                      end
         | 
| 13 15 | 
             
                    end
         | 
| @@ -41,10 +43,10 @@ module SecondLevelCache | |
| 41 43 | 
             
                  def cache_uniq_key(where_values)
         | 
| 42 44 | 
             
                    keys = where_values.collect do |k, v|
         | 
| 43 45 | 
             
                      v = Digest::MD5.hexdigest(v) if v && v.size >= 32
         | 
| 44 | 
            -
                      [k, v].join( | 
| 46 | 
            +
                      [k, v].join("_")
         | 
| 45 47 | 
             
                    end
         | 
| 46 48 |  | 
| 47 | 
            -
                    ext_key = keys.join( | 
| 49 | 
            +
                    ext_key = keys.join(",")
         | 
| 48 50 | 
             
                    "uniq_key_#{name}_#{ext_key}"
         | 
| 49 51 | 
             
                  end
         | 
| 50 52 | 
             
                end
         | 
| @@ -1,3 +1,5 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 1 3 | 
             
            module SecondLevelCache
         | 
| 2 4 | 
             
              module ActiveRecord
         | 
| 3 5 | 
             
                module FinderMethods
         | 
| @@ -54,7 +56,7 @@ module SecondLevelCache | |
| 54 56 | 
             
                    end
         | 
| 55 57 |  | 
| 56 58 | 
             
                    record = super(limit)
         | 
| 57 | 
            -
                    record | 
| 59 | 
            +
                    record&.write_second_level_cache
         | 
| 58 60 | 
             
                    record
         | 
| 59 61 | 
             
                  end
         | 
| 60 62 |  | 
| @@ -1,17 +1,20 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 1 3 | 
             
            module SecondLevelCache
         | 
| 2 4 | 
             
              module ActiveRecord
         | 
| 3 5 | 
             
                module Associations
         | 
| 4 6 | 
             
                  class Preloader
         | 
| 5 7 | 
             
                    module BelongsTo
         | 
| 6 | 
            -
                      def records_for(ids)
         | 
| 7 | 
            -
                        return super(ids) unless  | 
| 8 | 
            +
                      def records_for(ids, &block)
         | 
| 9 | 
            +
                        return super(ids, &block) unless reflection.is_a?(::ActiveRecord::Reflection::BelongsToReflection)
         | 
| 10 | 
            +
                        return super(ids, &block) unless klass.second_level_cache_enabled?
         | 
| 8 11 |  | 
| 9 12 | 
             
                        map_cache_keys = ids.map { |id| klass.second_level_cache_key(id) }
         | 
| 10 13 | 
             
                        records_from_cache = ::SecondLevelCache.cache_store.read_multi(*map_cache_keys)
         | 
| 11 14 | 
             
                        # NOTICE
         | 
| 12 15 | 
             
                        # Rails.cache.read_multi return hash that has keys only hitted.
         | 
| 13 16 | 
             
                        # eg. Rails.cache.read_multi(1,2,3) => {2 => hit_value, 3 => hit_value}
         | 
| 14 | 
            -
                        hitted_ids = records_from_cache.map { |key, _| key.split( | 
| 17 | 
            +
                        hitted_ids = records_from_cache.map { |key, _| key.split("/")[2] }
         | 
| 15 18 | 
             
                        missed_ids = ids.map(&:to_s) - hitted_ids
         | 
| 16 19 |  | 
| 17 20 | 
             
                        ::SecondLevelCache.logger.info "missed ids -> #{missed_ids.join(',')} | hitted ids -> #{hitted_ids.join(',')}"
         | 
| @@ -22,7 +25,7 @@ module SecondLevelCache | |
| 22 25 | 
             
                          return SecondLevelCache::RecordRelation.new(record_marshals)
         | 
| 23 26 | 
             
                        end
         | 
| 24 27 |  | 
| 25 | 
            -
                        records_from_db = super(missed_ids)
         | 
| 28 | 
            +
                        records_from_db = super(missed_ids, &block)
         | 
| 26 29 | 
             
                        records_from_db.map do |r|
         | 
| 27 30 | 
             
                          write_cache(r)
         | 
| 28 31 | 
             
                        end
         | 
| @@ -1,3 +1,5 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 1 3 | 
             
            module SecondLevelCache
         | 
| 2 4 | 
             
              module Mixin
         | 
| 3 5 | 
             
                extend ActiveSupport::Concern
         | 
| @@ -39,7 +41,7 @@ module SecondLevelCache | |
| 39 41 | 
             
                    return @cache_version if defined? @cache_version
         | 
| 40 42 | 
             
                    # This line is copy from:
         | 
| 41 43 | 
             
                    # https://github.com/rails/rails/blob/f9a5f48/activerecord/lib/active_record/core.rb#L236
         | 
| 42 | 
            -
                    attr_list = attribute_types.map { |name, type| "#{name}: #{type.type}" } *  | 
| 44 | 
            +
                    attr_list = attribute_types.map { |name, type| "#{name}: #{type.type}" } * ", "
         | 
| 43 45 | 
             
                    model_schema_digest = Digest::MD5.hexdigest(attr_list)
         | 
| 44 46 | 
             
                    @cache_version = "#{second_level_cache_options[:version]}/#{model_schema_digest}"
         | 
| 45 47 | 
             
                  end
         | 
    
        data/second_level_cache.gemspec
    CHANGED
    
    | @@ -30,12 +30,12 @@ Gem::Specification.new do |gem| | |
| 30 30 | 
             
              gem.require_paths = ['lib']
         | 
| 31 31 | 
             
              gem.version       = SecondLevelCache::VERSION
         | 
| 32 32 |  | 
| 33 | 
            -
              gem.add_runtime_dependency 'activesupport', ['>= 5.0. | 
| 34 | 
            -
              gem.add_runtime_dependency 'activerecord', ['>= 5.0. | 
| 33 | 
            +
              gem.add_runtime_dependency 'activesupport', ['>= 5.2.0.rc', '< 6']
         | 
| 34 | 
            +
              gem.add_runtime_dependency 'activerecord', ['>= 5.2.0.rc', '< 6']
         | 
| 35 35 |  | 
| 36 36 | 
             
              gem.add_development_dependency 'sqlite3'
         | 
| 37 37 | 
             
              gem.add_development_dependency 'rake'
         | 
| 38 38 | 
             
              gem.add_development_dependency 'pry'
         | 
| 39 | 
            -
              gem.add_development_dependency 'database_cleaner' | 
| 40 | 
            -
              gem.add_development_dependency 'rubocop'
         | 
| 39 | 
            +
              gem.add_development_dependency 'database_cleaner'
         | 
| 40 | 
            +
              gem.add_development_dependency 'rubocop', "~> 0.52.0"
         | 
| 41 41 | 
             
            end
         | 
| @@ -1,4 +1,6 @@ | |
| 1 | 
            -
             | 
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require "active_support/test_case"
         | 
| 2 4 |  | 
| 3 5 | 
             
            module ActiveRecordTestCaseHelper
         | 
| 4 6 | 
             
              def teardown
         | 
| @@ -48,7 +50,7 @@ module ActiveRecordTestCaseHelper | |
| 48 50 | 
             
                x = yield
         | 
| 49 51 | 
             
                the_log = ignore_none ? SQLCounter.log_all : SQLCounter.log
         | 
| 50 52 | 
             
                if num == :any
         | 
| 51 | 
            -
                  assert_operator the_log.size, :>=, 1,  | 
| 53 | 
            +
                  assert_operator the_log.size, :>=, 1, "1 or more queries expected, but none were executed."
         | 
| 52 54 | 
             
                else
         | 
| 53 55 | 
             
                  mesg = "#{the_log.size} instead of #{num} queries were executed.#{the_log.empty? ? '' : "\nQueries:\n#{the_log.join("\n")}"}"
         | 
| 54 56 | 
             
                  assert_equal num, the_log.size, mesg
         | 
| @@ -110,13 +112,13 @@ module ActiveRecordTestCaseHelper | |
| 110 112 |  | 
| 111 113 | 
             
                  # FIXME: this seems bad. we should probably have a better way to indicate
         | 
| 112 114 | 
             
                  # the query was cached
         | 
| 113 | 
            -
                  return if  | 
| 115 | 
            +
                  return if values[:name] == "CACHE"
         | 
| 114 116 |  | 
| 115 117 | 
             
                  self.class.log_all << sql
         | 
| 116 | 
            -
                  self.class.log << sql unless ignore | 
| 118 | 
            +
                  self.class.log << sql unless ignore.match?(sql)
         | 
| 117 119 | 
             
                end
         | 
| 118 120 |  | 
| 119 | 
            -
                ActiveSupport::Notifications.subscribe( | 
| 121 | 
            +
                ActiveSupport::Notifications.subscribe("sql.active_record", SQLCounter.new)
         | 
| 120 122 | 
             
              end
         | 
| 121 123 | 
             
            end
         | 
| 122 124 |  |