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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 53525088a6e3b8f394861ea5326ee235d94eb69a7b49b346ca09f26894e62f38
4
- data.tar.gz: e394ad428ee6131d5dcdf7107ca5fea22d23eb41ab6bc6c5ba96626343180f89
3
+ metadata.gz: a5b7807279bffd6a119f6aa212280d03782bea8d39b5fb166e9f2aa4e791f31b
4
+ data.tar.gz: a51ac429d13d5988c65311f2f0ebc8c0e331ebeb00c209edecdc9bbd82dec7b0
5
5
  SHA512:
6
- metadata.gz: 342baae02e08f68f1f4b624c153bb9fd00144f21aef38c5623144899a4554730fd98651411e26528e05f40b16fa51136235ae1831ebc25bb4860904de465aef8
7
- data.tar.gz: af565e5b9374ce950178437a16def8cda1b50639d2e98e5c367be5af0cacaff85ddcb7f0fc57a1a4309466e3f682760ae8a213f0ac9ed740eeed4bd9b975736e
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 "rails-5-2" do
2
- gem "activerecord", "~> 5.2.0"
3
- gem "activesupport", "~> 5.2.0"
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 "rails-6-0-beta" do
7
- gem "activerecord", "~> 6.0.0.beta"
8
- gem "activesupport", "~> 6.0.0.beta"
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
@@ -3,7 +3,7 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gem "minitest-ci"
6
- gem "activerecord", "~> 6.0.0.beta"
7
- gem "activesupport", "~> 6.0.0.beta"
6
+ gem "activerecord", "~> 6.0.0"
7
+ gem "activesupport", "~> 6.0.0"
8
8
 
9
9
  gemspec path: "../"
@@ -0,0 +1,9 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "minitest-ci"
6
+ gem "activerecord", "~> 6.1.0"
7
+ gem "activesupport", "~> 6.1.0"
8
+
9
+ gemspec path: "../"
@@ -0,0 +1,9 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "minitest-ci"
6
+ gem "activerecord", "~> 7.0.0"
7
+ gem "activesupport", "~> 7.0.0"
8
+
9
+ gemspec path: "../"
@@ -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", '~> 0.18' # As of 5.1.4, Rails runtime check excludes pg 1.x, see #31669
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"
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module IknowViewModels
4
- VERSION = '2.9.0'
4
+ VERSION = '2.10.0'
5
5
  end
@@ -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, *args, &block)
14
+ def method_missing(method, ...)
15
15
  if _callbacks.respond_to?(method, true)
16
- _callbacks.send(method, *args, &block)
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
- # prevent cached old class from being used to resolve associations
66
- ActiveSupport::Dependencies::Reference.clear!
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(*args)
27
- self.allocate.tap { |c| c.initialize_as_child(*args) }
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(*args)
213
- serialize_context_class.new(*args)
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(*args)
221
- deserialize_context_class.new(*args)
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
- db_config_path = File.join(File.dirname(__FILE__), '../config/database.yml')
10
- db_config = YAML.load(File.open(db_config_path))
11
- raise "Test database configuration missing" unless db_config["test"]
12
- ActiveRecord::Base.establish_connection(db_config["test"])
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::Dependencies::Reference.clear!
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
- module RailsDummyCache
19
- def cache
20
- DUMMY_RAILS_CACHE
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.9.0
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: 2019-09-03 00:00:00.000000000 Z
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.18'
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.18'
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/rails_6_0_beta.gemfile
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: '0'
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
- rubyforge_project:
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