iknow_view_models 2.9.0 → 2.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 53525088a6e3b8f394861ea5326ee235d94eb69a7b49b346ca09f26894e62f38
4
- data.tar.gz: e394ad428ee6131d5dcdf7107ca5fea22d23eb41ab6bc6c5ba96626343180f89
3
+ metadata.gz: a9b87bb5a0377e13f42a5468d35a918f7555cad606a85a8ec20217862c9e3382
4
+ data.tar.gz: 84b0c4a23ed0749dc27a029cc93958f2571e047ce327214c174386e26ce921a3
5
5
  SHA512:
6
- metadata.gz: 342baae02e08f68f1f4b624c153bb9fd00144f21aef38c5623144899a4554730fd98651411e26528e05f40b16fa51136235ae1831ebc25bb4860904de465aef8
7
- data.tar.gz: af565e5b9374ce950178437a16def8cda1b50639d2e98e5c367be5af0cacaff85ddcb7f0fc57a1a4309466e3f682760ae8a213f0ac9ed740eeed4bd9b975736e
6
+ metadata.gz: 0d2b3aafd5900d7cccd209c7526a39ad6099d670e4a15586e9b64b28a0211d153bef4dadca7d3ab4ed2a7203167e0022565e28bb8337669175c2d0d2257a6593
7
+ data.tar.gz: b8e28fca052e4664244704d876d94242d1ca4c2b40d696095011a5d795921d31dd5a588133e22ee813540e56a9cacfc77158b50b6df70288e1e59e6a3fa87fc3
@@ -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,13 +20,15 @@ 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
 
26
28
  spec.add_dependency "acts_as_manual_list"
27
29
  spec.add_dependency "deep_preloader"
28
30
  spec.add_dependency "iknow_cache"
29
- spec.add_dependency "iknow_params", "~> 2.2.0"
31
+ spec.add_dependency "iknow_params", ">= 2.2.0", "< 2.4"
30
32
  spec.add_dependency "safe_values"
31
33
  spec.add_dependency "keyword_builder"
32
34
 
@@ -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.1'
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.1
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-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -84,16 +84,22 @@ dependencies:
84
84
  name: iknow_params
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - "~>"
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
89
  version: 2.2.0
90
+ - - "<"
91
+ - !ruby/object:Gem::Version
92
+ version: '2.4'
90
93
  type: :runtime
91
94
  prerelease: false
92
95
  version_requirements: !ruby/object:Gem::Requirement
93
96
  requirements:
94
- - - "~>"
97
+ - - ">="
95
98
  - !ruby/object:Gem::Version
96
99
  version: 2.2.0
100
+ - - "<"
101
+ - !ruby/object:Gem::Version
102
+ version: '2.4'
97
103
  - !ruby/object:Gem::Dependency
98
104
  name: safe_values
99
105
  requirement: !ruby/object:Gem::Requirement
@@ -280,16 +286,16 @@ dependencies:
280
286
  name: pg
281
287
  requirement: !ruby/object:Gem::Requirement
282
288
  requirements:
283
- - - "~>"
289
+ - - ">="
284
290
  - !ruby/object:Gem::Version
285
- version: '0.18'
291
+ version: '0'
286
292
  type: :development
287
293
  prerelease: false
288
294
  version_requirements: !ruby/object:Gem::Requirement
289
295
  requirements:
290
- - - "~>"
296
+ - - ">="
291
297
  - !ruby/object:Gem::Version
292
- version: '0.18'
298
+ version: '0'
293
299
  - !ruby/object:Gem::Dependency
294
300
  name: pry
295
301
  requirement: !ruby/object:Gem::Requirement
@@ -353,11 +359,11 @@ executables: []
353
359
  extensions: []
354
360
  extra_rdoc_files: []
355
361
  files:
356
- - ".circleci/config.yml"
357
362
  - ".envrc"
363
+ - ".github/workflows/gem-push.yml"
364
+ - ".github/workflows/test.yml"
358
365
  - ".gitignore"
359
366
  - ".idea/codeStyleSettings.xml"
360
- - ".travis.yml"
361
367
  - Appraisals
362
368
  - Gemfile
363
369
  - LICENSE.txt
@@ -365,7 +371,9 @@ files:
365
371
  - Rakefile
366
372
  - appveyor.yml
367
373
  - gemfiles/rails_5_2.gemfile
368
- - gemfiles/rails_6_0_beta.gemfile
374
+ - gemfiles/rails_6_0.gemfile
375
+ - gemfiles/rails_6_1.gemfile
376
+ - gemfiles/rails_7_0.gemfile
369
377
  - iknow_view_models.gemspec
370
378
  - lib/iknow_view_models.rb
371
379
  - lib/iknow_view_models/railtie.rb
@@ -461,15 +469,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
461
469
  requirements:
462
470
  - - ">="
463
471
  - !ruby/object:Gem::Version
464
- version: '0'
472
+ version: 2.7.3
465
473
  required_rubygems_version: !ruby/object:Gem::Requirement
466
474
  requirements:
467
475
  - - ">="
468
476
  - !ruby/object:Gem::Version
469
477
  version: '0'
470
478
  requirements: []
471
- rubyforge_project:
472
- rubygems_version: 2.7.6.2
479
+ rubygems_version: 3.1.6
473
480
  signing_key:
474
481
  specification_version: 4
475
482
  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