Skip to content

Commit d4ef85a

Browse files
authored
Update the tests matrix (#849)
* Update gitignore * This is the commit message #3: Do not run rails >= 7 on ruby < 3 * Remove jruby and truffleruby * Fix rubocop * Use rspec instead of rake
1 parent 54a605c commit d4ef85a

12 files changed

+71
-101
lines changed

.github/workflows/test.yml

+22-25
Original file line numberDiff line numberDiff line change
@@ -14,41 +14,38 @@ jobs:
1414
strategy:
1515
fail-fast: false
1616
matrix:
17-
ruby: ['2.6', '2.7', '3.0', 'jruby', 'truffleruby']
18-
gemfile: ['gemfiles/activerecord_5.0.2.gemfile', 'gemfiles/activerecord_5.1.0.gemfile', 'gemfiles/activerecord_5.2.2.gemfile', 'gemfiles/activerecord_6.0.0.gemfile', 'gemfiles/activerecord_6.1.0.gemfile', 'gemfiles/activerecord_main.gemfile']
17+
ruby: ['2.7', '3.0', '3.1', '3.2', '3.3']
18+
gemfile: ['gemfiles/activerecord_5.2.2.gemfile', 'gemfiles/activerecord_6.0.0.gemfile', 'gemfiles/activerecord_6.1.0.gemfile', 'gemfiles/activerecord_7.0.0.gemfile', 'gemfiles/activerecord_7.1.0.gemfile', 'gemfiles/activerecord_main.gemfile']
1919
include:
20+
- gemfile: 'gemfiles/activerecord_7.1.0.gemfile'
21+
ruby: '3.3'
22+
- gemfile: 'gemfiles/activerecord_7.1.0.gemfile'
23+
ruby: '3.0'
2024
- gemfile: 'gemfiles/activerecord_7.0.0.gemfile'
21-
ruby: '3.1'
25+
ruby: '3.3'
2226
- gemfile: 'gemfiles/activerecord_7.0.0.gemfile'
2327
ruby: '3.0'
2428
- gemfile: 'gemfiles/activerecord_6.1.0.gemfile'
25-
ruby: '3.1'
29+
ruby: '3.3'
2630
- gemfile: 'gemfiles/activerecord_6.1.0.gemfile'
2731
ruby: '3.0'
2832
exclude:
2933
- gemfile: 'gemfiles/activerecord_5.2.2.gemfile'
30-
ruby: '3.0' # rails 5.2 can't run on ruby 3.0
31-
- gemfile: 'gemfiles/activerecord_5.1.0.gemfile'
32-
ruby: '3.0' # rails 5.1 can't run on ruby 3.0
33-
- gemfile: 'gemfiles/activerecord_5.0.2.gemfile'
34-
ruby: '3.0' # rails 5.0 can't run on ruby 3.0
35-
- gemfile: 'gemfiles/activerecord_5.0.2.gemfile'
36-
ruby: '3.0' # rails 5.0 can't run on ruby 3.0
37-
- gemfile: 'gemfiles/activerecord_5.0.2.gemfile'
38-
ruby: 'truffleruby' # TruffleRuby 21.0 targets Ruby 2.7, same as above
39-
- gemfile: 'gemfiles/activerecord_5.1.0.gemfile'
40-
ruby: 'truffleruby' # TruffleRuby 21.0 targets Ruby 2.7, same as above
34+
ruby: '3.0'
35+
- gemfile: 'gemfiles/activerecord_5.2.2.gemfile'
36+
ruby: '3.1'
4137
- gemfile: 'gemfiles/activerecord_5.2.2.gemfile'
42-
ruby: 'truffleruby' # TruffleRuby 21.0 targets Ruby 2.7, same as above
38+
ruby: '3.2'
39+
- gemfile: 'gemfiles/activerecord_5.2.2.gemfile'
40+
ruby: '3.3'
41+
- gemfile: 'gemfiles/activerecord_7.0.0.gemfile'
42+
ruby: '2.7'
43+
- gemfile: 'gemfiles/activerecord_7.1.0.gemfile'
44+
ruby: '2.7'
4345
- gemfile: 'gemfiles/activerecord_main.gemfile'
44-
ruby: '2.6' # rails 7+ requires ruby 3.0+
45-
- gemfile: 'gemfiles/activerecord_5.0.2.gemfile'
46-
ruby: 'jruby' # this *should* work - there's a test failure; it's not incompatible like the other excludes. could be an issue in Rails 5.0.2?
47-
- gemfile: 'gemfiles/activerecord_6.1.0.gemfile'
48-
ruby: 'jruby' # this *should* work. it seems like there's an issue with rails 6 on jruby.
46+
ruby: '2.7'
4947
- gemfile: 'gemfiles/activerecord_main.gemfile'
50-
ruby: 'jruby' # this *should* work. it seems like there's an issue with rails 6 on jruby.
51-
48+
ruby: '3.0'
5249
env:
5350
BUNDLE_GEMFILE: ${{ matrix.gemfile }}
5451

@@ -84,10 +81,10 @@ jobs:
8481
bundler-cache: true
8582

8683
- name: Run tests on sqlite
87-
run: DB=sqlite bundle exec rake
84+
run: DB=sqlite bundle exec rspec
8885

8986
- name: Run tests on postgres
90-
run: DB=postgres bundle exec rake
87+
run: DB=postgres bundle exec rspec
9188

9289
lint:
9390
name: Lint

.rubocop.yml

+1
Original file line numberDiff line numberDiff line change
@@ -50,3 +50,4 @@ AllCops:
5050
- 'gemfiles/**/*'
5151
- 'vendor/**/*'
5252
- 'Appraisals'
53+
- 'node_modules/**/*'

.rubocop_todo.yml

+3
Original file line numberDiff line numberDiff line change
@@ -214,3 +214,6 @@ Style/StringChars:
214214
Style/StringConcatenation:
215215
Exclude:
216216
- 'lib/cancan/rule.rb'
217+
218+
Lint/SafeNavigationChain:
219+
Enabled: false

Appraisals

+23-40
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,3 @@
1-
appraise 'activerecord_5.0.2' do
2-
gem 'activerecord', '~> 5.0.2', require: 'active_record'
3-
gem 'activesupport', '~> 5.0.2', require: 'active_support/all'
4-
gem 'actionpack', '~> 5.0.2', require: 'action_pack'
5-
6-
gemfile.platforms :jruby do
7-
gem 'activerecord-jdbcsqlite3-adapter'
8-
gem 'jdbc-sqlite3'
9-
gem 'jdbc-postgres'
10-
end
11-
12-
gemfile.platforms :ruby, :mswin, :mingw do
13-
gem 'pg', '~> 1.3.4'
14-
gem 'sqlite3', '~> 1.3.0'
15-
end
16-
end
17-
18-
appraise 'activerecord_5.1.0' do
19-
gem 'activerecord', '~> 5.1.0', require: 'active_record'
20-
gem 'activesupport', '~> 5.1.0', require: 'active_support/all'
21-
gem 'actionpack', '~> 5.1.0', require: 'action_pack'
22-
23-
gemfile.platforms :jruby do
24-
gem 'activerecord-jdbcsqlite3-adapter'
25-
gem 'jdbc-sqlite3'
26-
gem 'jdbc-postgres'
27-
end
28-
29-
gemfile.platforms :ruby, :mswin, :mingw do
30-
gem 'pg', '~> 1.3.4'
31-
gem 'sqlite3', '~> 1.4.2'
32-
end
33-
end
34-
351
appraise 'activerecord_5.2.2' do
362
gem 'activerecord', '~> 5.2.2', require: 'active_record'
373
gem 'activesupport', '~> 5.2.2', require: 'active_support/all'
@@ -45,7 +11,7 @@ appraise 'activerecord_5.2.2' do
4511

4612
gemfile.platforms :ruby, :mswin, :mingw do
4713
gem 'pg', '~> 1.3.4'
48-
gem 'sqlite3', '~> 1.4.2'
14+
gem 'sqlite3', '~> 1.7.3'
4915
end
5016
end
5117

@@ -62,7 +28,7 @@ appraise 'activerecord_6.0.0' do
6228

6329
platforms :ruby, :mswin, :mingw do
6430
gem 'pg', '~> 1.3.4'
65-
gem 'sqlite3', '~> 1.4.2'
31+
gem 'sqlite3', '~> 1.7.3'
6632
end
6733
end
6834

@@ -79,7 +45,7 @@ appraise 'activerecord_6.1.0' do
7945

8046
platforms :ruby, :mswin, :mingw do
8147
gem 'pg', '~> 1.3.4'
82-
gem 'sqlite3', '~> 1.4.2'
48+
gem 'sqlite3', '~> 1.7.3'
8349
end
8450
end
8551

@@ -96,7 +62,24 @@ appraise 'activerecord_7.0.0' do
9662

9763
platforms :ruby, :mswin, :mingw do
9864
gem 'pg', '~> 1.3.4'
99-
gem 'sqlite3', '~> 1.4.2'
65+
gem 'sqlite3', '~> 1.7.3'
66+
end
67+
end
68+
69+
appraise 'activerecord_7.1.0' do
70+
gem 'actionpack', '~> 7.1.0', require: 'action_pack'
71+
gem 'activerecord', '~> 7.1.0', require: 'active_record'
72+
gem 'activesupport', '~> 7.1.0', require: 'active_support/all'
73+
74+
platforms :jruby do
75+
gem 'activerecord-jdbcsqlite3-adapter'
76+
gem 'jdbc-sqlite3'
77+
gem 'jdbc-postgres'
78+
end
79+
80+
platforms :ruby, :mswin, :mingw do
81+
gem 'pg', '~> 1.5.6'
82+
gem 'sqlite3', '~> 1.7.3'
10083
end
10184
end
10285

@@ -114,7 +97,7 @@ appraise 'activerecord_main' do
11497
end
11598

11699
platforms :ruby, :mswin, :mingw do
117-
gem 'pg', '~> 1.3.4'
118-
gem 'sqlite3', '~> 1.4.2'
100+
gem 'pg', '~> 1.5.6'
101+
gem 'sqlite3', '~> 1.7.3'
119102
end
120103
end

gemfiles/activerecord_5.1.0.gemfile

-20
This file was deleted.

gemfiles/activerecord_5.2.2.gemfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ end
1414

1515
platforms :ruby, :mswin, :mingw do
1616
gem "pg", "~> 1.3.4"
17-
gem "sqlite3", "~> 1.4.2"
17+
gem "sqlite3", "~> 1.7.3"
1818
end
1919

2020
gemspec path: "../"

gemfiles/activerecord_6.0.0.gemfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ end
1414

1515
platforms :ruby, :mswin, :mingw do
1616
gem "pg", "~> 1.3.4"
17-
gem "sqlite3", "~> 1.4.2"
17+
gem "sqlite3", "~> 1.7.3"
1818
end
1919

2020
gemspec path: "../"

gemfiles/activerecord_6.1.0.gemfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ end
1414

1515
platforms :ruby, :mswin, :mingw do
1616
gem "pg", "~> 1.3.4"
17-
gem "sqlite3", "~> 1.4.2"
17+
gem "sqlite3", "~> 1.7.3"
1818
end
1919

2020
gemspec path: "../"

gemfiles/activerecord_7.0.0.gemfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ end
1414

1515
platforms :ruby, :mswin, :mingw do
1616
gem "pg", "~> 1.3.4"
17-
gem "sqlite3", "~> 1.4.2"
17+
gem "sqlite3", "~> 1.7.3"
1818
end
1919

2020
gemspec path: "../"

gemfiles/activerecord_5.0.2.gemfile gemfiles/activerecord_7.1.0.gemfile

+5-5
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
source "https://rubygems.org"
44

5-
gem "activerecord", "~> 5.0.2", require: "active_record"
6-
gem "activesupport", "~> 5.0.2", require: "active_support/all"
7-
gem "actionpack", "~> 5.0.2", require: "action_pack"
5+
gem "actionpack", "~> 7.1.0", require: "action_pack"
6+
gem "activerecord", "~> 7.1.0", require: "active_record"
7+
gem "activesupport", "~> 7.1.0", require: "active_support/all"
88

99
platforms :jruby do
1010
gem "activerecord-jdbcsqlite3-adapter"
@@ -13,8 +13,8 @@ platforms :jruby do
1313
end
1414

1515
platforms :ruby, :mswin, :mingw do
16-
gem "pg", "~> 1.3.4"
17-
gem "sqlite3", "~> 1.3.0"
16+
gem "pg", "~> 1.5.6"
17+
gem "sqlite3", "~> 1.7.3"
1818
end
1919

2020
gemspec path: "../"

gemfiles/activerecord_main.gemfile

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ platforms :jruby do
1515
end
1616

1717
platforms :ruby, :mswin, :mingw do
18-
gem "pg", "~> 1.3.4"
19-
gem "sqlite3", "~> 1.4.2"
18+
gem "pg", "~> 1.5.6"
19+
gem "sqlite3", "~> 1.7.3"
2020
end
2121

2222
gemspec path: "../"

lib/cancan/model_adapters/active_record_adapter.rb

+11-5
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
# frozen_string_literal: true
22

3+
# rubocop:disable Metrics/AbcSize
4+
# rubocop:disable Metrics/CyclomaticComplexity
5+
# rubocop:disable Metrics/PerceivedComplexity
36
module CanCan
47
module ModelAdapters
58
class ActiveRecordAdapter < AbstractAdapter
@@ -52,7 +55,7 @@ def parent_child_conditions(parent, child, all_conditions)
5255
# Search again in case of polymorphic associations, this time matching on the :has_many side
5356
# via the :as option, as well as klass
5457
foreign_key ||= parent_class.reflect_on_all_associations(:has_many).find do |has_many_assoc|
55-
!matching_parent_child_polymorphic_association(has_many_assoc, child_class).nil?
58+
matching_parent_child_polymorphic_association(has_many_assoc, child_class)
5659
end&.foreign_key&.to_sym
5760

5861
foreign_key.nil? ? nil : all_conditions[foreign_key]
@@ -61,7 +64,7 @@ def parent_child_conditions(parent, child, all_conditions)
6164
def matching_parent_child_polymorphic_association(parent_assoc, child_class)
6265
return nil unless parent_assoc.klass == child_class
6366
return nil if parent_assoc&.options[:as].nil?
64-
67+
6568
child_class.reflect_on_all_associations(:belongs_to).find do |child_assoc|
6669
# Only match this way for polymorphic associations
6770
child_assoc.polymorphic? && child_assoc.name == parent_assoc.options[:as]
@@ -72,12 +75,12 @@ def child_association_to_parent(parent, child)
7275
child_class = child.is_a?(Class) ? child : child.class
7376
parent_class = parent.is_a?(Class) ? parent : parent.class
7477

75-
association = child_class.reflect_on_all_associations(:belongs_to).find do |association|
78+
association = child_class.reflect_on_all_associations(:belongs_to).find do |belongs_to_assoc|
7679
# Do not match on polymorphic associations or it will throw an error (klass cannot be determined)
77-
!association.polymorphic? && association.klass == parent.class
80+
!belongs_to_assoc.polymorphic? && belongs_to_assoc.klass == parent.class
7881
end
7982

80-
return association unless association.nil?
83+
return association if association
8184

8285
parent_class.reflect_on_all_associations(:has_many).each do |has_many_assoc|
8386
association ||= matching_parent_child_polymorphic_association(has_many_assoc, child_class)
@@ -217,6 +220,9 @@ def sanitize_sql(conditions)
217220
end
218221
end
219222
end
223+
# rubocop:enable Metrics/PerceivedComplexity
224+
# rubocop:enable Metrics/CyclomaticComplexity
225+
# rubocop:enable Metrics/AbcSize
220226

221227
ActiveSupport.on_load(:active_record) do
222228
send :include, CanCan::ModelAdditions

0 commit comments

Comments
 (0)