iknow_view_models 2.9.0 → 2.10.0

Sign up to get free protection for your applications and to get access to all the features.
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