iknow_view_models 2.9.0 → 2.10.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 +4 -4
 - data/.github/workflows/gem-push.yml +31 -0
 - data/.github/workflows/test.yml +65 -0
 - data/Appraisals +16 -6
 - data/gemfiles/{rails_6_0_beta.gemfile → rails_6_0.gemfile} +2 -2
 - data/gemfiles/rails_6_1.gemfile +9 -0
 - data/gemfiles/rails_7_0.gemfile +9 -0
 - data/iknow_view_models.gemspec +3 -1
 - data/lib/iknow_view_models/version.rb +1 -1
 - data/lib/view_model/callbacks.rb +2 -2
 - data/lib/view_model/test_helpers/arvm_builder.rb +4 -2
 - data/lib/view_model/traversal_context.rb +2 -2
 - data/lib/view_model.rb +5 -4
 - data/test/helpers/arvm_test_models.rb +12 -4
 - data/test/helpers/controller_test_helpers.rb +3 -1
 - data/test/unit/view_model/active_record/cache_test.rb +3 -8
 - metadata +13 -12
 - data/.circleci/config.yml +0 -119
 - data/.travis.yml +0 -31
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: a5b7807279bffd6a119f6aa212280d03782bea8d39b5fb166e9f2aa4e791f31b
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: a51ac429d13d5988c65311f2f0ebc8c0e331ebeb00c209edecdc9bbd82dec7b0
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: bc8eac346b4d66764c0c4d391ed4cb1baee030d1a843855a6425a7b2ddb9e8596528b817021ed83413ea96c7404ae68e5e6a8c6574fbefb9145ef026e4c50951
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: d2e28952cfbb1ff9fb4d8e1adbb4afce1ca21b67836e3ac560cea2c0ba57e63a44f0bd39de133ab56b2c281ff0672d5452d2fae9f487c902ae1e8575087074ed
         
     | 
| 
         @@ -0,0 +1,31 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            name: Publish Ruby Gem
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            on:
         
     | 
| 
      
 4 
     | 
    
         
            +
              push:
         
     | 
| 
      
 5 
     | 
    
         
            +
                branches: [ "v2.x" ]
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            jobs:
         
     | 
| 
      
 8 
     | 
    
         
            +
              build:
         
     | 
| 
      
 9 
     | 
    
         
            +
                name: Build + Publish
         
     | 
| 
      
 10 
     | 
    
         
            +
                runs-on: ubuntu-latest
         
     | 
| 
      
 11 
     | 
    
         
            +
                permissions:
         
     | 
| 
      
 12 
     | 
    
         
            +
                  contents: read
         
     | 
| 
      
 13 
     | 
    
         
            +
                  packages: write
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                steps:
         
     | 
| 
      
 16 
     | 
    
         
            +
                - uses: actions/checkout@v3
         
     | 
| 
      
 17 
     | 
    
         
            +
                - name: Set up Ruby 2.7
         
     | 
| 
      
 18 
     | 
    
         
            +
                  uses: ruby/setup-ruby@v1
         
     | 
| 
      
 19 
     | 
    
         
            +
                  with:
         
     | 
| 
      
 20 
     | 
    
         
            +
                    ruby-version: 2.7
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
                - name: Publish to RubyGems
         
     | 
| 
      
 23 
     | 
    
         
            +
                  run: |
         
     | 
| 
      
 24 
     | 
    
         
            +
                    mkdir -p $HOME/.gem
         
     | 
| 
      
 25 
     | 
    
         
            +
                    touch $HOME/.gem/credentials
         
     | 
| 
      
 26 
     | 
    
         
            +
                    chmod 0600 $HOME/.gem/credentials
         
     | 
| 
      
 27 
     | 
    
         
            +
                    printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
         
     | 
| 
      
 28 
     | 
    
         
            +
                    gem build *.gemspec
         
     | 
| 
      
 29 
     | 
    
         
            +
                    gem push *.gem
         
     | 
| 
      
 30 
     | 
    
         
            +
                  env:
         
     | 
| 
      
 31 
     | 
    
         
            +
                    GEM_HOST_API_KEY: "${{secrets.RUBYGEMS_AUTH_TOKEN}}"
         
     | 
| 
         @@ -0,0 +1,65 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            name: Run Tests
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            on:
         
     | 
| 
      
 4 
     | 
    
         
            +
              pull_request:
         
     | 
| 
      
 5 
     | 
    
         
            +
                branches: "**"
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            permissions:
         
     | 
| 
      
 8 
     | 
    
         
            +
              contents: read
         
     | 
| 
      
 9 
     | 
    
         
            +
              checks: write
         
     | 
| 
      
 10 
     | 
    
         
            +
              pull-requests: write
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            jobs:
         
     | 
| 
      
 13 
     | 
    
         
            +
              test:
         
     | 
| 
      
 14 
     | 
    
         
            +
                runs-on: ubuntu-latest
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
                services:
         
     | 
| 
      
 17 
     | 
    
         
            +
                  postgres:
         
     | 
| 
      
 18 
     | 
    
         
            +
                    image: postgres:13-alpine
         
     | 
| 
      
 19 
     | 
    
         
            +
                    ports:
         
     | 
| 
      
 20 
     | 
    
         
            +
                      - "5432:5432"
         
     | 
| 
      
 21 
     | 
    
         
            +
                    env:
         
     | 
| 
      
 22 
     | 
    
         
            +
                      POSTGRES_DB: iknow_view_models
         
     | 
| 
      
 23 
     | 
    
         
            +
                      POSTGRES_USER: rails
         
     | 
| 
      
 24 
     | 
    
         
            +
                      POSTGRES_PASSWORD: password
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
                strategy:
         
     | 
| 
      
 27 
     | 
    
         
            +
                  fail-fast: false
         
     | 
| 
      
 28 
     | 
    
         
            +
                  matrix:
         
     | 
| 
      
 29 
     | 
    
         
            +
                    ruby-version: ['2.7', '3.0', '3.1', '3.2']
         
     | 
| 
      
 30 
     | 
    
         
            +
                    include:
         
     | 
| 
      
 31 
     | 
    
         
            +
                      - ruby-version: '2.7'
         
     | 
| 
      
 32 
     | 
    
         
            +
                        bundle-gemfile: gemfiles/rails_5_2.gemfile
         
     | 
| 
      
 33 
     | 
    
         
            +
                      - ruby-version: '3.0'
         
     | 
| 
      
 34 
     | 
    
         
            +
                        bundle-gemfile: gemfiles/rails_6_0.gemfile
         
     | 
| 
      
 35 
     | 
    
         
            +
                      - ruby-version: '3.1'
         
     | 
| 
      
 36 
     | 
    
         
            +
                        bundle-gemfile: gemfiles/rails_6_1.gemfile
         
     | 
| 
      
 37 
     | 
    
         
            +
                      - ruby-version: '3.2'
         
     | 
| 
      
 38 
     | 
    
         
            +
                        bundle-gemfile: gemfiles/rails_7_0.gemfile
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
                env: # $BUNDLE_GEMFILE must be set at the job level, so it is set for all steps
         
     | 
| 
      
 41 
     | 
    
         
            +
                  BUNDLE_GEMFILE: ${{ github.workspace }}/${{ matrix.bundle-gemfile }}
         
     | 
| 
      
 42 
     | 
    
         
            +
                  DATABASE_URL: "postgres://rails:password@localhost:5432/iknow_view_models"
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
                steps:
         
     | 
| 
      
 45 
     | 
    
         
            +
                - uses: actions/checkout@v3
         
     | 
| 
      
 46 
     | 
    
         
            +
                - name: Set up Ruby
         
     | 
| 
      
 47 
     | 
    
         
            +
                  uses: ruby/setup-ruby@v1
         
     | 
| 
      
 48 
     | 
    
         
            +
                  with:
         
     | 
| 
      
 49 
     | 
    
         
            +
                    ruby-version: ${{ matrix.ruby-version }}
         
     | 
| 
      
 50 
     | 
    
         
            +
                    bundler-cache: true # runs 'bundle install' and caches installed gems automatically
         
     | 
| 
      
 51 
     | 
    
         
            +
                - name: Run tests
         
     | 
| 
      
 52 
     | 
    
         
            +
                  run: bundle exec rake test
         
     | 
| 
      
 53 
     | 
    
         
            +
                - name: Upload result
         
     | 
| 
      
 54 
     | 
    
         
            +
                  uses: actions/upload-artifact@v3
         
     | 
| 
      
 55 
     | 
    
         
            +
                  if: always()
         
     | 
| 
      
 56 
     | 
    
         
            +
                  with:
         
     | 
| 
      
 57 
     | 
    
         
            +
                    path: test/reports/
         
     | 
| 
      
 58 
     | 
    
         
            +
                    name: test_results_${{ matrix.ruby-version }}
         
     | 
| 
      
 59 
     | 
    
         
            +
                - name: Test Report
         
     | 
| 
      
 60 
     | 
    
         
            +
                  uses: dorny/test-reporter@v1
         
     | 
| 
      
 61 
     | 
    
         
            +
                  if: always()
         
     | 
| 
      
 62 
     | 
    
         
            +
                  with:
         
     | 
| 
      
 63 
     | 
    
         
            +
                    name: Minitest Tests - ${{ matrix.ruby-version }}
         
     | 
| 
      
 64 
     | 
    
         
            +
                    path: test/reports/*.xml
         
     | 
| 
      
 65 
     | 
    
         
            +
                    reporter: java-junit
         
     | 
    
        data/Appraisals
    CHANGED
    
    | 
         @@ -1,9 +1,19 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            appraise  
     | 
| 
       2 
     | 
    
         
            -
              gem  
     | 
| 
       3 
     | 
    
         
            -
              gem  
     | 
| 
      
 1 
     | 
    
         
            +
            appraise 'rails-5-2' do
         
     | 
| 
      
 2 
     | 
    
         
            +
              gem 'activerecord', '~> 5.2.0'
         
     | 
| 
      
 3 
     | 
    
         
            +
              gem 'activesupport', '~> 5.2.0'
         
     | 
| 
       4 
4 
     | 
    
         
             
            end
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
       6 
     | 
    
         
            -
            appraise  
     | 
| 
       7 
     | 
    
         
            -
              gem  
     | 
| 
       8 
     | 
    
         
            -
              gem  
     | 
| 
      
 6 
     | 
    
         
            +
            appraise 'rails-6-0' do
         
     | 
| 
      
 7 
     | 
    
         
            +
              gem 'activerecord', '~> 6.0.0'
         
     | 
| 
      
 8 
     | 
    
         
            +
              gem 'activesupport', '~> 6.0.0'
         
     | 
| 
      
 9 
     | 
    
         
            +
            end
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            appraise 'rails-6-1' do
         
     | 
| 
      
 12 
     | 
    
         
            +
              gem 'activerecord', '~> 6.1.0'
         
     | 
| 
      
 13 
     | 
    
         
            +
              gem 'activesupport', '~> 6.1.0'
         
     | 
| 
      
 14 
     | 
    
         
            +
            end
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
            appraise 'rails-7-0' do
         
     | 
| 
      
 17 
     | 
    
         
            +
              gem 'activerecord', '~> 7.0.0'
         
     | 
| 
      
 18 
     | 
    
         
            +
              gem 'activesupport', '~> 7.0.0'
         
     | 
| 
       9 
19 
     | 
    
         
             
            end
         
     | 
    
        data/iknow_view_models.gemspec
    CHANGED
    
    | 
         @@ -20,6 +20,8 @@ Gem::Specification.new do |spec| 
     | 
|
| 
       20 
20 
     | 
    
         
             
              spec.test_files    = spec.files.grep(%r{^(test|spec|features)/})
         
     | 
| 
       21 
21 
     | 
    
         
             
              spec.require_paths = ["lib"]
         
     | 
| 
       22 
22 
     | 
    
         | 
| 
      
 23 
     | 
    
         
            +
              spec.required_ruby_version = '>= 2.7.3'
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
       23 
25 
     | 
    
         
             
              spec.add_dependency "activerecord", ">= 5.0"
         
     | 
| 
       24 
26 
     | 
    
         
             
              spec.add_dependency "activesupport", ">= 5.0"
         
     | 
| 
       25 
27 
     | 
    
         | 
| 
         @@ -42,7 +44,7 @@ Gem::Specification.new do |spec| 
     | 
|
| 
       42 
44 
     | 
    
         
             
              spec.add_development_dependency "byebug"
         
     | 
| 
       43 
45 
     | 
    
         
             
              spec.add_development_dependency "method_source"
         
     | 
| 
       44 
46 
     | 
    
         
             
              spec.add_development_dependency "minitest-hooks"
         
     | 
| 
       45 
     | 
    
         
            -
              spec.add_development_dependency "pg" 
     | 
| 
      
 47 
     | 
    
         
            +
              spec.add_development_dependency "pg"
         
     | 
| 
       46 
48 
     | 
    
         
             
              spec.add_development_dependency "pry"
         
     | 
| 
       47 
49 
     | 
    
         
             
              spec.add_development_dependency "rake"
         
     | 
| 
       48 
50 
     | 
    
         
             
              spec.add_development_dependency "rspec-expectations"
         
     | 
    
        data/lib/view_model/callbacks.rb
    CHANGED
    
    | 
         @@ -11,9 +11,9 @@ module ViewModel::Callbacks 
     | 
|
| 
       11 
11 
     | 
    
         
             
              # callbacks instance with additional instance method access to the view,
         
     | 
| 
       12 
12 
     | 
    
         
             
              # context and extra context-dependent parameters.
         
     | 
| 
       13 
13 
     | 
    
         
             
              module CallbackEnvContext
         
     | 
| 
       14 
     | 
    
         
            -
                def method_missing(method,  
     | 
| 
      
 14 
     | 
    
         
            +
                def method_missing(method, ...)
         
     | 
| 
       15 
15 
     | 
    
         
             
                  if _callbacks.respond_to?(method, true)
         
     | 
| 
       16 
     | 
    
         
            -
                    _callbacks.send(method,  
     | 
| 
      
 16 
     | 
    
         
            +
                    _callbacks.send(method, ...)
         
     | 
| 
       17 
17 
     | 
    
         
             
                  else
         
     | 
| 
       18 
18 
     | 
    
         
             
                    super
         
     | 
| 
       19 
19 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -62,8 +62,10 @@ class ViewModel::TestHelpers::ARVMBuilder 
     | 
|
| 
       62 
62 
     | 
    
         
             
                ActiveRecord::Base.connection.execute("DROP TABLE IF EXISTS #{name.underscore.pluralize} CASCADE")
         
     | 
| 
       63 
63 
     | 
    
         
             
                namespace.send(:remove_const, name)
         
     | 
| 
       64 
64 
     | 
    
         
             
                namespace.send(:remove_const, viewmodel_name) if viewmodel
         
     | 
| 
       65 
     | 
    
         
            -
                 
     | 
| 
       66 
     | 
    
         
            -
             
     | 
| 
      
 65 
     | 
    
         
            +
                if ActiveSupport::VERSION::MAJOR < 7
         
     | 
| 
      
 66 
     | 
    
         
            +
                  # prevent cached old class from being used to resolve associations
         
     | 
| 
      
 67 
     | 
    
         
            +
                  ActiveSupport::Dependencies::Reference.clear!
         
     | 
| 
      
 68 
     | 
    
         
            +
                end
         
     | 
| 
       67 
69 
     | 
    
         
             
              end
         
     | 
| 
       68 
70 
     | 
    
         | 
| 
       69 
71 
     | 
    
         
             
              private
         
     | 
| 
         @@ -23,8 +23,8 @@ class ViewModel::TraversalContext 
     | 
|
| 
       23 
23 
     | 
    
         
             
              attr_reader :shared_context
         
     | 
| 
       24 
24 
     | 
    
         
             
              delegate :access_control, :callbacks, to: :shared_context
         
     | 
| 
       25 
25 
     | 
    
         | 
| 
       26 
     | 
    
         
            -
              def self.new_child( 
     | 
| 
       27 
     | 
    
         
            -
                self.allocate.tap { |c| c.initialize_as_child( 
     | 
| 
      
 26 
     | 
    
         
            +
              def self.new_child(...)
         
     | 
| 
      
 27 
     | 
    
         
            +
                self.allocate.tap { |c| c.initialize_as_child(...) }
         
     | 
| 
       28 
28 
     | 
    
         
             
              end
         
     | 
| 
       29 
29 
     | 
    
         | 
| 
       30 
30 
     | 
    
         
             
              def initialize(shared_context: nil, **shared_context_params)
         
     | 
    
        data/lib/view_model.rb
    CHANGED
    
    | 
         @@ -3,6 +3,7 @@ 
     | 
|
| 
       3 
3 
     | 
    
         
             
            # A ViewModel encapsulates a particular aggregation of data calculated via the
         
     | 
| 
       4 
4 
     | 
    
         
             
            # underlying models and provides a means of serializing it into views.
         
     | 
| 
       5 
5 
     | 
    
         
             
            require 'jbuilder'
         
     | 
| 
      
 6 
     | 
    
         
            +
            require 'base64'
         
     | 
| 
       6 
7 
     | 
    
         
             
            require 'deep_preloader'
         
     | 
| 
       7 
8 
     | 
    
         | 
| 
       8 
9 
     | 
    
         
             
            class ViewModel
         
     | 
| 
         @@ -209,16 +210,16 @@ class ViewModel 
     | 
|
| 
       209 
210 
     | 
    
         
             
                  ViewModel::SerializeContext
         
     | 
| 
       210 
211 
     | 
    
         
             
                end
         
     | 
| 
       211 
212 
     | 
    
         | 
| 
       212 
     | 
    
         
            -
                def new_serialize_context( 
     | 
| 
       213 
     | 
    
         
            -
                  serialize_context_class.new( 
     | 
| 
      
 213 
     | 
    
         
            +
                def new_serialize_context(...)
         
     | 
| 
      
 214 
     | 
    
         
            +
                  serialize_context_class.new(...)
         
     | 
| 
       214 
215 
     | 
    
         
             
                end
         
     | 
| 
       215 
216 
     | 
    
         | 
| 
       216 
217 
     | 
    
         
             
                def deserialize_context_class
         
     | 
| 
       217 
218 
     | 
    
         
             
                  ViewModel::DeserializeContext
         
     | 
| 
       218 
219 
     | 
    
         
             
                end
         
     | 
| 
       219 
220 
     | 
    
         | 
| 
       220 
     | 
    
         
            -
                def new_deserialize_context( 
     | 
| 
       221 
     | 
    
         
            -
                  deserialize_context_class.new( 
     | 
| 
      
 221 
     | 
    
         
            +
                def new_deserialize_context(...)
         
     | 
| 
      
 222 
     | 
    
         
            +
                  deserialize_context_class.new(...)
         
     | 
| 
       222 
223 
     | 
    
         
             
                end
         
     | 
| 
       223 
224 
     | 
    
         | 
| 
       224 
225 
     | 
    
         
             
                def accepts_schema_version?(schema_version)
         
     | 
| 
         @@ -6,10 +6,18 @@ require "view_model/active_record/controller" 
     | 
|
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         
             
            require "acts_as_manual_list"
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
      
 9 
     | 
    
         
            +
            db_config =
         
     | 
| 
      
 10 
     | 
    
         
            +
              if (url = ENV['DATABASE_URL'])
         
     | 
| 
      
 11 
     | 
    
         
            +
                url
         
     | 
| 
      
 12 
     | 
    
         
            +
              else
         
     | 
| 
      
 13 
     | 
    
         
            +
                db_config_path = File.join(File.dirname(__FILE__), '../config/database.yml')
         
     | 
| 
      
 14 
     | 
    
         
            +
                yaml = YAML.safe_load(File.open(db_config_path))
         
     | 
| 
      
 15 
     | 
    
         
            +
                raise 'Test database configuration missing' unless yaml['test']
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                yaml['test']
         
     | 
| 
      
 18 
     | 
    
         
            +
              end
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
            ActiveRecord::Base.establish_connection(db_config)
         
     | 
| 
       13 
21 
     | 
    
         | 
| 
       14 
22 
     | 
    
         
             
            # Remove test tables if any exist
         
     | 
| 
       15 
23 
     | 
    
         
             
            %w[labels parents children targets poly_ones poly_twos owners
         
     | 
| 
         @@ -267,7 +267,9 @@ module ControllerTestControllers 
     | 
|
| 
       267 
267 
     | 
    
         
             
                [:ParentController, :ChildController, :LabelController, :TargetController].each do |name|
         
     | 
| 
       268 
268 
     | 
    
         
             
                  Object.send(:remove_const, name)
         
     | 
| 
       269 
269 
     | 
    
         
             
                end
         
     | 
| 
       270 
     | 
    
         
            -
                ActiveSupport:: 
     | 
| 
      
 270 
     | 
    
         
            +
                if ActiveSupport::VERSION::MAJOR < 7
         
     | 
| 
      
 271 
     | 
    
         
            +
                  ActiveSupport::Dependencies::Reference.clear!
         
     | 
| 
      
 272 
     | 
    
         
            +
                end
         
     | 
| 
       271 
273 
     | 
    
         
             
                super
         
     | 
| 
       272 
274 
     | 
    
         
             
              end
         
     | 
| 
       273 
275 
     | 
    
         
             
            end
         
     | 
| 
         @@ -15,16 +15,11 @@ require "view_model/active_record" 
     | 
|
| 
       15 
15 
     | 
    
         | 
| 
       16 
16 
     | 
    
         
             
            DUMMY_RAILS_CACHE = ActiveSupport::Cache::MemoryStore.new
         
     | 
| 
       17 
17 
     | 
    
         | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
               
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
              end
         
     | 
| 
      
 18 
     | 
    
         
            +
            IknowCache.configure! do
         
     | 
| 
      
 19 
     | 
    
         
            +
              logger ::ActiveRecord::Base.logger
         
     | 
| 
      
 20 
     | 
    
         
            +
              cache DUMMY_RAILS_CACHE
         
     | 
| 
       22 
21 
     | 
    
         
             
            end
         
     | 
| 
       23 
22 
     | 
    
         | 
| 
       24 
     | 
    
         
            -
            # Ensure we have a dummy Rails, and then prepend our dummy cache
         
     | 
| 
       25 
     | 
    
         
            -
            module Rails; end
         
     | 
| 
       26 
     | 
    
         
            -
            Rails.singleton_class.prepend(RailsDummyCache)
         
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
23 
     | 
    
         
             
            class ViewModel::ActiveRecord
         
     | 
| 
       29 
24 
     | 
    
         
             
              class CacheTest < ActiveSupport::TestCase
         
     | 
| 
       30 
25 
     | 
    
         
             
                using ViewModel::Utils::Collections
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: iknow_view_models
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 2. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 2.10.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - iKnow Team
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date:  
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2023-05-16 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: activerecord
         
     | 
| 
         @@ -280,16 +280,16 @@ dependencies: 
     | 
|
| 
       280 
280 
     | 
    
         
             
              name: pg
         
     | 
| 
       281 
281 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       282 
282 
     | 
    
         
             
                requirements:
         
     | 
| 
       283 
     | 
    
         
            -
                - - " 
     | 
| 
      
 283 
     | 
    
         
            +
                - - ">="
         
     | 
| 
       284 
284 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       285 
     | 
    
         
            -
                    version: '0 
     | 
| 
      
 285 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
       286 
286 
     | 
    
         
             
              type: :development
         
     | 
| 
       287 
287 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       288 
288 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       289 
289 
     | 
    
         
             
                requirements:
         
     | 
| 
       290 
     | 
    
         
            -
                - - " 
     | 
| 
      
 290 
     | 
    
         
            +
                - - ">="
         
     | 
| 
       291 
291 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       292 
     | 
    
         
            -
                    version: '0 
     | 
| 
      
 292 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
       293 
293 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       294 
294 
     | 
    
         
             
              name: pry
         
     | 
| 
       295 
295 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
         @@ -353,11 +353,11 @@ executables: [] 
     | 
|
| 
       353 
353 
     | 
    
         
             
            extensions: []
         
     | 
| 
       354 
354 
     | 
    
         
             
            extra_rdoc_files: []
         
     | 
| 
       355 
355 
     | 
    
         
             
            files:
         
     | 
| 
       356 
     | 
    
         
            -
            - ".circleci/config.yml"
         
     | 
| 
       357 
356 
     | 
    
         
             
            - ".envrc"
         
     | 
| 
      
 357 
     | 
    
         
            +
            - ".github/workflows/gem-push.yml"
         
     | 
| 
      
 358 
     | 
    
         
            +
            - ".github/workflows/test.yml"
         
     | 
| 
       358 
359 
     | 
    
         
             
            - ".gitignore"
         
     | 
| 
       359 
360 
     | 
    
         
             
            - ".idea/codeStyleSettings.xml"
         
     | 
| 
       360 
     | 
    
         
            -
            - ".travis.yml"
         
     | 
| 
       361 
361 
     | 
    
         
             
            - Appraisals
         
     | 
| 
       362 
362 
     | 
    
         
             
            - Gemfile
         
     | 
| 
       363 
363 
     | 
    
         
             
            - LICENSE.txt
         
     | 
| 
         @@ -365,7 +365,9 @@ files: 
     | 
|
| 
       365 
365 
     | 
    
         
             
            - Rakefile
         
     | 
| 
       366 
366 
     | 
    
         
             
            - appveyor.yml
         
     | 
| 
       367 
367 
     | 
    
         
             
            - gemfiles/rails_5_2.gemfile
         
     | 
| 
       368 
     | 
    
         
            -
            - gemfiles/ 
     | 
| 
      
 368 
     | 
    
         
            +
            - gemfiles/rails_6_0.gemfile
         
     | 
| 
      
 369 
     | 
    
         
            +
            - gemfiles/rails_6_1.gemfile
         
     | 
| 
      
 370 
     | 
    
         
            +
            - gemfiles/rails_7_0.gemfile
         
     | 
| 
       369 
371 
     | 
    
         
             
            - iknow_view_models.gemspec
         
     | 
| 
       370 
372 
     | 
    
         
             
            - lib/iknow_view_models.rb
         
     | 
| 
       371 
373 
     | 
    
         
             
            - lib/iknow_view_models/railtie.rb
         
     | 
| 
         @@ -461,15 +463,14 @@ required_ruby_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       461 
463 
     | 
    
         
             
              requirements:
         
     | 
| 
       462 
464 
     | 
    
         
             
              - - ">="
         
     | 
| 
       463 
465 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       464 
     | 
    
         
            -
                  version:  
     | 
| 
      
 466 
     | 
    
         
            +
                  version: 2.7.3
         
     | 
| 
       465 
467 
     | 
    
         
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         
     | 
| 
       466 
468 
     | 
    
         
             
              requirements:
         
     | 
| 
       467 
469 
     | 
    
         
             
              - - ">="
         
     | 
| 
       468 
470 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       469 
471 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       470 
472 
     | 
    
         
             
            requirements: []
         
     | 
| 
       471 
     | 
    
         
            -
             
     | 
| 
       472 
     | 
    
         
            -
            rubygems_version: 2.7.6.2
         
     | 
| 
      
 473 
     | 
    
         
            +
            rubygems_version: 3.1.6
         
     | 
| 
       473 
474 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       474 
475 
     | 
    
         
             
            specification_version: 4
         
     | 
| 
       475 
476 
     | 
    
         
             
            summary: ViewModels provide a means of encapsulating a collection of related data
         
     | 
    
        data/.circleci/config.yml
    DELETED
    
    | 
         @@ -1,119 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            version: 2.1
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            executors:
         
     | 
| 
       4 
     | 
    
         
            -
              ruby-pg:
         
     | 
| 
       5 
     | 
    
         
            -
                parameters:
         
     | 
| 
       6 
     | 
    
         
            -
                  ruby-version:
         
     | 
| 
       7 
     | 
    
         
            -
                    type: string
         
     | 
| 
       8 
     | 
    
         
            -
                    default: "2.6"
         
     | 
| 
       9 
     | 
    
         
            -
                  pg-version:
         
     | 
| 
       10 
     | 
    
         
            -
                    type: string
         
     | 
| 
       11 
     | 
    
         
            -
                    default: "11"
         
     | 
| 
       12 
     | 
    
         
            -
                  gemfile:
         
     | 
| 
       13 
     | 
    
         
            -
                    type: string
         
     | 
| 
       14 
     | 
    
         
            -
                    default: "Gemfile"
         
     | 
| 
       15 
     | 
    
         
            -
                environment:
         
     | 
| 
       16 
     | 
    
         
            -
                  PGHOST: 127.0.0.1
         
     | 
| 
       17 
     | 
    
         
            -
                  PGUSER: eikaiwa
         
     | 
| 
       18 
     | 
    
         
            -
                docker:
         
     | 
| 
       19 
     | 
    
         
            -
                  - image: circleci/ruby:<< parameters.ruby-version >>
         
     | 
| 
       20 
     | 
    
         
            -
                    environment:
         
     | 
| 
       21 
     | 
    
         
            -
                      BUNDLE_JOBS: 3
         
     | 
| 
       22 
     | 
    
         
            -
                      BUNDLE_RETRY: 3
         
     | 
| 
       23 
     | 
    
         
            -
                      BUNDLE_PATH: vendor/bundle
         
     | 
| 
       24 
     | 
    
         
            -
                      RAILS_ENV: test
         
     | 
| 
       25 
     | 
    
         
            -
                      BUNDLE_GEMFILE: << parameters.gemfile >>
         
     | 
| 
       26 
     | 
    
         
            -
                  - image: circleci/postgres:<< parameters.pg-version >>-alpine
         
     | 
| 
       27 
     | 
    
         
            -
                    environment:
         
     | 
| 
       28 
     | 
    
         
            -
                      POSTGRES_USER: eikaiwa
         
     | 
| 
       29 
     | 
    
         
            -
                      POSTGRES_DB: iknow_view_models
         
     | 
| 
       30 
     | 
    
         
            -
                      POSTGRES_PASSWORD: ""
         
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
            jobs:
         
     | 
| 
       33 
     | 
    
         
            -
              test:
         
     | 
| 
       34 
     | 
    
         
            -
                parameters:
         
     | 
| 
       35 
     | 
    
         
            -
                  ruby-version:
         
     | 
| 
       36 
     | 
    
         
            -
                    type: string
         
     | 
| 
       37 
     | 
    
         
            -
                  pg-version:
         
     | 
| 
       38 
     | 
    
         
            -
                    type: string
         
     | 
| 
       39 
     | 
    
         
            -
                  gemfile:
         
     | 
| 
       40 
     | 
    
         
            -
                    type: string
         
     | 
| 
       41 
     | 
    
         
            -
                executor:
         
     | 
| 
       42 
     | 
    
         
            -
                  name: ruby-pg
         
     | 
| 
       43 
     | 
    
         
            -
                  ruby-version: << parameters.ruby-version >>
         
     | 
| 
       44 
     | 
    
         
            -
                  pg-version: << parameters.pg-version >>
         
     | 
| 
       45 
     | 
    
         
            -
                  gemfile: << parameters.gemfile >>
         
     | 
| 
       46 
     | 
    
         
            -
                parallelism: 1
         
     | 
| 
       47 
     | 
    
         
            -
                steps:
         
     | 
| 
       48 
     | 
    
         
            -
                  - checkout
         
     | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
       50 
     | 
    
         
            -
                  - run:
         
     | 
| 
       51 
     | 
    
         
            -
                      # Remove the non-appraisal gemfile for safety: we never want to use it.
         
     | 
| 
       52 
     | 
    
         
            -
                      name: Prepare bundler
         
     | 
| 
       53 
     | 
    
         
            -
                      command: bundle -v && rm Gemfile
         
     | 
| 
       54 
     | 
    
         
            -
             
     | 
| 
       55 
     | 
    
         
            -
                  - run:
         
     | 
| 
       56 
     | 
    
         
            -
                      name: Compute a gemfile lock
         
     | 
| 
       57 
     | 
    
         
            -
                      command: bundle lock && cp "${BUNDLE_GEMFILE}.lock" /tmp/gem-lock
         
     | 
| 
       58 
     | 
    
         
            -
             
     | 
| 
       59 
     | 
    
         
            -
                  - restore_cache:
         
     | 
| 
       60 
     | 
    
         
            -
                      keys:
         
     | 
| 
       61 
     | 
    
         
            -
                        - iknow_viewmodels-<< parameters.ruby-version >>-{{ checksum "/tmp/gem-lock" }}
         
     | 
| 
       62 
     | 
    
         
            -
                        - iknow_viewmodels-
         
     | 
| 
       63 
     | 
    
         
            -
             
     | 
| 
       64 
     | 
    
         
            -
                  - run:
         
     | 
| 
       65 
     | 
    
         
            -
                      name: Bundle Install
         
     | 
| 
       66 
     | 
    
         
            -
                      command: bundle check || bundle install
         
     | 
| 
       67 
     | 
    
         
            -
             
     | 
| 
       68 
     | 
    
         
            -
                  - save_cache:
         
     | 
| 
       69 
     | 
    
         
            -
                      key: iknow_viewmodels-<< parameters.ruby-version >>-{{ checksum "/tmp/gem-lock" }}
         
     | 
| 
       70 
     | 
    
         
            -
                      paths:
         
     | 
| 
       71 
     | 
    
         
            -
                        - vendor/bundle
         
     | 
| 
       72 
     | 
    
         
            -
             
     | 
| 
       73 
     | 
    
         
            -
                  - run:
         
     | 
| 
       74 
     | 
    
         
            -
                      name: Wait for DB
         
     | 
| 
       75 
     | 
    
         
            -
                      command: dockerize -wait tcp://localhost:5432 -timeout 1m
         
     | 
| 
       76 
     | 
    
         
            -
             
     | 
| 
       77 
     | 
    
         
            -
                  - run:
         
     | 
| 
       78 
     | 
    
         
            -
                      name: Run minitest
         
     | 
| 
       79 
     | 
    
         
            -
                      command: bundle exec rake test
         
     | 
| 
       80 
     | 
    
         
            -
             
     | 
| 
       81 
     | 
    
         
            -
                  - store_test_results:
         
     | 
| 
       82 
     | 
    
         
            -
                      path: test/reports
         
     | 
| 
       83 
     | 
    
         
            -
             
     | 
| 
       84 
     | 
    
         
            -
              publish:
         
     | 
| 
       85 
     | 
    
         
            -
                executor: ruby-pg
         
     | 
| 
       86 
     | 
    
         
            -
                steps:
         
     | 
| 
       87 
     | 
    
         
            -
                   - checkout
         
     | 
| 
       88 
     | 
    
         
            -
                   - run:
         
     | 
| 
       89 
     | 
    
         
            -
                       name: Setup Rubygems
         
     | 
| 
       90 
     | 
    
         
            -
                       command: |
         
     | 
| 
       91 
     | 
    
         
            -
                         mkdir ~/.gem &&
         
     | 
| 
       92 
     | 
    
         
            -
                         echo -e "---\r\n:rubygems_api_key: $RUBYGEMS_API_KEY" > ~/.gem/credentials &&
         
     | 
| 
       93 
     | 
    
         
            -
                         chmod 0600 ~/.gem/credentials
         
     | 
| 
       94 
     | 
    
         
            -
                   - run:
         
     | 
| 
       95 
     | 
    
         
            -
                       name: Publish to Rubygems
         
     | 
| 
       96 
     | 
    
         
            -
                       command: |
         
     | 
| 
       97 
     | 
    
         
            -
                         gem build iknow_view_models.gemspec
         
     | 
| 
       98 
     | 
    
         
            -
                         gem push iknow_view_models-*.gem
         
     | 
| 
       99 
     | 
    
         
            -
             
     | 
| 
       100 
     | 
    
         
            -
            workflows:
         
     | 
| 
       101 
     | 
    
         
            -
              version: 2.1
         
     | 
| 
       102 
     | 
    
         
            -
              build:
         
     | 
| 
       103 
     | 
    
         
            -
                jobs:
         
     | 
| 
       104 
     | 
    
         
            -
                  - test:
         
     | 
| 
       105 
     | 
    
         
            -
                      name: 'ruby 2.6 rails 5.2 pg 11'
         
     | 
| 
       106 
     | 
    
         
            -
                      ruby-version: "2.6"
         
     | 
| 
       107 
     | 
    
         
            -
                      pg-version: "11"
         
     | 
| 
       108 
     | 
    
         
            -
                      gemfile: gemfiles/rails_5_2.gemfile
         
     | 
| 
       109 
     | 
    
         
            -
                  - test:
         
     | 
| 
       110 
     | 
    
         
            -
                      name: 'ruby 2.6 rails 6.0 pg 11'
         
     | 
| 
       111 
     | 
    
         
            -
                      ruby-version: "2.6"
         
     | 
| 
       112 
     | 
    
         
            -
                      pg-version: "11"
         
     | 
| 
       113 
     | 
    
         
            -
                      gemfile: gemfiles/rails_6_0_beta.gemfile
         
     | 
| 
       114 
     | 
    
         
            -
                  - publish:
         
     | 
| 
       115 
     | 
    
         
            -
                      filters:
         
     | 
| 
       116 
     | 
    
         
            -
                        branches:
         
     | 
| 
       117 
     | 
    
         
            -
                          only: master
         
     | 
| 
       118 
     | 
    
         
            -
                        tags:
         
     | 
| 
       119 
     | 
    
         
            -
                          ignore: /.*/
         
     | 
    
        data/.travis.yml
    DELETED
    
    | 
         @@ -1,31 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            dist: trusty
         
     | 
| 
       2 
     | 
    
         
            -
            sudo: false
         
     | 
| 
       3 
     | 
    
         
            -
            language: ruby
         
     | 
| 
       4 
     | 
    
         
            -
            cache: bundler
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
            rvm:
         
     | 
| 
       7 
     | 
    
         
            -
              - 2.5
         
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
            gemfile:
         
     | 
| 
       10 
     | 
    
         
            -
              - gemfiles/rails_5_2.gemfile
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
            addons:
         
     | 
| 
       13 
     | 
    
         
            -
              postgresql: "10"
         
     | 
| 
       14 
     | 
    
         
            -
              apt:
         
     | 
| 
       15 
     | 
    
         
            -
                packages:
         
     | 
| 
       16 
     | 
    
         
            -
                  - postgresql-10
         
     | 
| 
       17 
     | 
    
         
            -
                  - postgresql-client-10
         
     | 
| 
       18 
     | 
    
         
            -
                  - postgresql-server-dev-10
         
     | 
| 
       19 
     | 
    
         
            -
            env:
         
     | 
| 
       20 
     | 
    
         
            -
              global:
         
     | 
| 
       21 
     | 
    
         
            -
                - PGPORT=5433
         
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
            before_install:
         
     | 
| 
       24 
     | 
    
         
            -
              - gem update --system
         
     | 
| 
       25 
     | 
    
         
            -
              - gem install bundler
         
     | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
       27 
     | 
    
         
            -
            before_script:
         
     | 
| 
       28 
     | 
    
         
            -
              - psql -c 'CREATE DATABASE iknow_view_models;'
         
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
            notifications:
         
     | 
| 
       31 
     | 
    
         
            -
              email: false
         
     |