belongs_to_one_of 0.3.0 → 1.0.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: c859bd77b3e7ba52dae74536ea9f93ee9a1e9c4d6a76cc535094a37c176e856a
4
- data.tar.gz: 4ac6d7b3a889e9089d2237067eb3f8a15b326bb4be3019102f194c281d74aed3
3
+ metadata.gz: dbd36b371bf0f376c5c9a5b4c112f200eda2a5c47e9da5e2aa35c6a02c973233
4
+ data.tar.gz: c5ea5abc93e38741455991599720be1d08b0d3a8df986a2757cc9260c883411d
5
5
  SHA512:
6
- metadata.gz: c07f2b4d2a28862e96e2a784294d25f364a64bee26ae7f1c96da3ac9ce46ca01e0b222155b429f630afd669ce750a4ec8830b0f000ccd7aae0164e97e10f7027
7
- data.tar.gz: b7b56824e7b1d1cf8809b739babb31c8adcc1a7e9d40b4ade605694b7a3119bb8c5a7dad83fe465a200347708a22c99f56182e63fcbf7614038823cf6667e0eb
6
+ metadata.gz: 599c6afe2cc5998c6d934c0048daf2cf7f74162a834a62e5b6a9cdb22deb870e86b32b43c43ebb0b6288ed37a5e07b2a108b8973ee5620da93c42841d02588ad
7
+ data.tar.gz: 8c55f5eae719ccc790dcd35b9f7b8ec08724ea71ddb64252105fec1e41ca0a13cf7192df79a383966b45544ad1ba23255ab56cdff65fbe7df384a4cf9d86ed08
@@ -1,7 +1,7 @@
1
1
  version: 2
2
2
  updates:
3
- - package-ecosystem: bundler
4
- directory: "/"
5
- schedule:
6
- interval: weekly
7
- open-pull-requests-limit: 10
3
+ - package-ecosystem: bundler
4
+ directory: "/"
5
+ schedule:
6
+ interval: weekly
7
+ open-pull-requests-limit: 10
@@ -0,0 +1,32 @@
1
+ name: tests
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - "master"
7
+ pull_request:
8
+
9
+ jobs:
10
+ tests:
11
+ strategy:
12
+ fail-fast: false
13
+ matrix:
14
+ ruby-version: ["3.1", "3.2", "3.3", "3.4"]
15
+ rails-version: ["7.0", "7.1", "7.2", "8.0"]
16
+ exclude:
17
+ - ruby-version: "3.1"
18
+ rails-version: "8.0"
19
+ runs-on: ubuntu-latest
20
+ env:
21
+ RAILS_VERSION: ${{ matrix.rails-version }}
22
+ steps:
23
+ - uses: actions/checkout@v3
24
+ - name: Set up Ruby
25
+ uses: ruby/setup-ruby@v1
26
+ with:
27
+ bundler-cache: true
28
+ ruby-version: "${{ matrix.ruby-version }}"
29
+ - name: Run tests
30
+ run: bundle exec rspec
31
+ - name: Run rubocop
32
+ run: bundle exec rubocop --parallel --extra-details --display-style-guide
data/.rubocop.yml CHANGED
@@ -1,16 +1,9 @@
1
- inherit_from: .rubocop_todo.yml
2
-
3
1
  inherit_gem:
4
2
  gc_ruboconfig: rubocop.yml
5
3
 
6
4
  AllCops:
7
5
  TargetRubyVersion: 3.1
8
-
9
- Style/CaseLikeIf:
10
- Enabled: false
6
+ NewCops: enable
11
7
 
12
8
  Gemspec/RequiredRubyVersion:
13
9
  Enabled: false
14
-
15
- Style/HashSyntax:
16
- Enabled: false
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 3.1.0
1
+ 3.4.1
data/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [v1.0.0] - 2025-01-30
4
+
5
+ - Drop support for Ruby < 3.1
6
+ - Add support for Rails < 9, drop support for Rails < 7
7
+
3
8
  ## [v0.3.0] - 2022-02-09
4
9
 
5
10
  - Add Ruby 3.1 support
data/Gemfile CHANGED
@@ -5,3 +5,14 @@ source "https://rubygems.org"
5
5
  gemspec
6
6
 
7
7
  gem "activerecord", "~> #{ENV['RAILS_VERSION']}" if ENV["RAILS_VERSION"]
8
+
9
+ group :test, :development do
10
+ gem "bundler"
11
+ gem "gc_ruboconfig", "~> 5"
12
+ gem "pry-byebug"
13
+ gem "rspec", "~> 3.9"
14
+ gem "rspec_junit_formatter", "~> 0.4"
15
+
16
+ # For integration testing
17
+ gem "sqlite3", "~> 2"
18
+ end
data/README.md CHANGED
@@ -1,4 +1,5 @@
1
1
  # belongs_to_one_of
2
+
2
3
  Gem to support activemodel relations where one model can be a child of one of many models.
3
4
  In our examples, we will be targeting a class `Competitor` which can either belong to a `School` or a `College`.
4
5
  We will consider this more general concept an `organisation`.
@@ -8,22 +9,23 @@ and some helper functions to safely set and get the associated model.
8
9
 
9
10
  ## What about rails polymorphic relations?
10
11
 
11
- Unlike rails polymorphic relations, this supports having a separate `id` column for each parent
12
+ Unlike rails polymorphic relations, this supports having a separate `id` column for each parent
12
13
  model type (e.g. `school_id` and `college_id` instead of just `organisation_id`). This is desirable
13
14
  (in some cases) to enable the database to use foreign keys.
14
15
 
15
16
  The gem will also error if you try to set a resource which isn't one of the specified classes, unlike
16
17
  a rails polymorphic relation which will accept any model class.
17
18
 
18
-
19
19
  ## Installation
20
20
 
21
21
  Install the package from Rubygems:
22
+
22
23
  ```shell script
23
24
  gem install belongs_to_one_of
24
25
  ```
25
26
 
26
27
  Or add it to your gemfile
28
+
27
29
  ```
28
30
  gem 'belongs_to_one_of'
29
31
  ```
@@ -37,7 +39,7 @@ Our code will say:
37
39
  > This model belongs to an organisation, which might be a School or might be a College
38
40
 
39
41
  This allows us to store the association in the columns `school_id` and `college_id`, which can use foreign keys,
40
- but for the 99% of your code which doesn't care which is which, they can just call a method `organisation` or
42
+ but for the 99% of your code which doesn't care which is which, they can just call a method `organisation` or
41
43
  `organisation_id` to access the resource.
42
44
 
43
45
  The library adds a new association to `ActiveRecord` called `belongs_to_one_of :organisation, `. To use it, simply call this
@@ -50,11 +52,11 @@ end
50
52
 
51
53
  class School < ActiveRecord::Base
52
54
  has_many :competitors
53
- end
55
+ end
54
56
 
55
57
  class College < ActiveRecord::Base
56
58
  has_many :competitors
57
- end
59
+ end
58
60
 
59
61
  school = School.new
60
62
 
@@ -64,7 +66,7 @@ my_competitor.organisation
64
66
  # => school
65
67
 
66
68
  my_competitor.organisation_id == school.id
67
- # => true
69
+ # => true
68
70
  ```
69
71
 
70
72
  Note that this helper calls `belongs_to :school, optional:true` and `belongs_to :college, optional:true`, so you don't have to.
@@ -77,18 +79,22 @@ The hook defines a few methods on your class. The names are dynamic, we will use
77
79
  ### Validators
78
80
 
79
81
  #### `belongs_to_exactly_one_[organisation]`
82
+
80
83
  A validator that can be used to check that a model belongs to exactly one organisation
81
84
 
82
85
  #### `belongs_to_at_most_one_[organisation]`
86
+
83
87
  A validator that can be used to check that a model belongs to either no organisations or one organisation
84
88
 
85
89
  #### `[organisation_type]_matches_[organisation]`
86
- A validator that can be used to check that the type of model matches the model. Only relevant when
90
+
91
+ A validator that can be used to check that the type of model matches the model. Only relevant when
87
92
  `include_type_column` is true
88
93
 
89
94
  ### Getters & Setters
90
95
 
91
96
  #### `[organisation]=`
97
+
92
98
  Allows you to create a new instance of the model with the interface:
93
99
 
94
100
  ```ruby
@@ -101,23 +107,30 @@ Competitor.new(
101
107
  This will raise a `ModelNotFound` exception if the organisation is not one of the permitted model types
102
108
 
103
109
  #### `[organisation]`
110
+
104
111
  Allows you to get the linked resource via `.organisation` e.g.:
112
+
105
113
  ```ruby
106
114
  my_competitor.organisation
107
115
  ```
116
+
108
117
  #### `[organisation]_id`
118
+
109
119
  Allows you to get the linked resource's id via `.organisation_id` e.g.:
120
+
110
121
  ```ruby
111
122
  my_competitor.organisation_id
112
- ```
123
+ ```
113
124
 
114
125
  #### `[organisation]_type`
126
+
115
127
  This is only set when the associations are configured with `include_type_column` (see below). This allows you to access the resource type via
116
128
  `.organisation_type` e.g.:
129
+
117
130
  ```ruby
118
131
  my_competitor.organisation_type
119
132
  # => 'School'
120
- ```
133
+ ```
121
134
 
122
135
  ## Configuration Options
123
136
 
@@ -125,10 +138,10 @@ my_competitor.organisation_type
125
138
 
126
139
  By default, the library assumes that the underlying table looks like:
127
140
 
128
- `id` | `name` | `school_id` | `college_id`
129
- ----|----|---|---
130
- 1 | Aaron J Aaronson | | COL123
131
- 2 | Betty F Parker | SCH456 |
141
+ | `id` | `name` | `school_id` | `college_id` |
142
+ | ---- | ---------------- | ----------- | ------------ |
143
+ | 1 | Aaron J Aaronson | | COL123 |
144
+ | 2 | Betty F Parker | SCH456 |
132
145
 
133
146
  however you can set `include_type_column: true` to explicitly store what type of model is connected, e.g.:
134
147
 
@@ -136,10 +149,10 @@ however you can set `include_type_column: true` to explicitly store what type of
136
149
  belongs_to_one_of :organisation, %i[school college], include_type_column: true
137
150
  ```
138
151
 
139
- `id` | `name` | `organisation_type` | `school_id` | `college_id`
140
- ----|----|---|---|---
141
- 1 | Aaron J Aaronson | College | | COL123
142
- 2 | Betty F Parker | School | SCH456 |
152
+ | `id` | `name` | `organisation_type` | `school_id` | `college_id` |
153
+ | ---- | ---------------- | ------------------- | ----------- | ------------ |
154
+ | 1 | Aaron J Aaronson | College | | COL123 |
155
+ | 2 | Betty F Parker | School | SCH456 |
143
156
 
144
157
  if the column is not called `[organisation]_type`, you can specify the column name e.g.
145
158
 
@@ -147,16 +160,15 @@ if the column is not called `[organisation]_type`, you can specify the column na
147
160
  belongs_to_one_of :organisation, %i[school college], include_type_column: :type_of_organisation
148
161
  ```
149
162
 
150
- `id` | `name` | `type_of_organisation` | `school_id` | `college_id`
151
- ----|----|---|---|---
152
- 1 | Aaron J Aaronson | College | | COL123
153
- 2 | Betty F Parker | School | SCH456 |
154
-
163
+ | `id` | `name` | `type_of_organisation` | `school_id` | `college_id` |
164
+ | ---- | ---------------- | ---------------------- | ----------- | ------------ |
165
+ | 1 | Aaron J Aaronson | College | | COL123 |
166
+ | 2 | Betty F Parker | School | SCH456 |
155
167
 
156
168
  ### `type_column_value`
157
169
 
158
170
  If you have `include_type_column: true` set, by default we assume you want to store the classname in the db.
159
- However, there may be some logic that you want to apply. If you pass a Proc to `type_column_value`
171
+ However, there may be some logic that you want to apply. If you pass a Proc to `type_column_value`
160
172
  you can add your own logic to determine what goes into the db.
161
173
 
162
174
  ```ruby
@@ -164,15 +176,14 @@ you can add your own logic to determine what goes into the db.
164
176
  type_column_value: ->(resource) { resource.class.downcase }
165
177
  ```
166
178
 
167
- `id` | `name` | `organisation_type` | `school_id` | `college_id`
168
- ----|----|---|---|---
169
- 1 | Aaron J Aaronson | college | | COL123
170
- 2 | Betty F Parker | school | SCH456 |
171
-
179
+ | `id` | `name` | `organisation_type` | `school_id` | `college_id` |
180
+ | ---- | ---------------- | ------------------- | ----------- | ------------ |
181
+ | 1 | Aaron J Aaronson | college | | COL123 |
182
+ | 2 | Betty F Parker | school | SCH456 |
172
183
 
173
184
  ## License & Contributing
174
185
 
175
- * BelongsToOneOf is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
176
- * Bug reports and pull requests are welcome on GitHub at https://github.com/gocardless/belongs-to-one-of.
186
+ - BelongsToOneOf is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
187
+ - Bug reports and pull requests are welcome on GitHub at https://github.com/gocardless/belongs-to-one-of.
177
188
 
178
189
  GoCardless ♥ open source. If you do too, come [join us](https://gocardless.com/about/careers/).
@@ -23,17 +23,9 @@ Gem::Specification.new do |spec|
23
23
  end
24
24
  spec.require_paths = ["lib"]
25
25
 
26
- spec.required_ruby_version = ">= 2.6"
26
+ spec.required_ruby_version = ">= 3.1"
27
27
 
28
- spec.add_development_dependency "bundler"
29
- spec.add_development_dependency "gc_ruboconfig", "~> 2.31.0"
30
- spec.add_development_dependency "pry-byebug"
31
- spec.add_development_dependency "rspec", "~> 3.9"
32
- spec.add_development_dependency "rspec_junit_formatter", "~> 0.4"
33
-
34
- # For integration testing
35
- spec.add_development_dependency "sqlite3", "~> 1.4.1"
36
-
37
- spec.add_dependency "activerecord", ">= 5.2", "< 8"
38
- spec.add_dependency "activesupport", ">= 5.2", "< 8"
28
+ spec.add_dependency "activerecord", ">= 7.0", "< 9"
29
+ spec.add_dependency "activesupport", ">= 7.0", "< 9"
30
+ spec.metadata["rubygems_mfa_required"] = "true"
39
31
  end
@@ -1,13 +1,9 @@
1
1
  # Compatibility
2
2
 
3
3
  Our goal as maintainers is for the library to be compatible with all supported
4
- versions of Ruby.
4
+ versions of CRuby/MRI Ruby listed [here](https://endoflife.date/ruby).
5
5
 
6
- Specifically, any CRuby/MRI version that has not received an End of Life notice
7
- ([e.g. this notice for Ruby 2.1](https://www.ruby-lang.org/en/news/2017/04/01/support-of-ruby-2-1-has-ended/))
8
- is supported.
9
-
10
- To that end, [our build matrix](../.circleci/config.yml) includes all these versions.
6
+ To that end, [our build matrix](../.github/tests.yml) includes all these versions.
11
7
 
12
8
  Any time BelongsToOneOf doesn't work on a supported version of Ruby, it's a bug, and can be
13
9
  reported [here](https://github.com/gocardless/belongs-to-one-of/issues).
@@ -55,15 +55,15 @@ module BelongsToOneOf
55
55
  return if resource.nil?
56
56
 
57
57
  possible_resource_types.each_key do |resource_type|
58
- model.public_send("#{resource_type}=", nil)
58
+ model.public_send(:"#{resource_type}=", nil)
59
59
  end
60
60
 
61
- model.instance_variable_set("@#{resource_key}", resource)
61
+ model.instance_variable_set(:"@#{resource_key}", resource)
62
62
  resource_type_accessor = find_resource_accessor(resource, model)
63
63
 
64
64
  unless resource_type_accessor
65
- message = "one of #{possible_resource_types.keys.join(', ')} expected, "\
66
- "got #{resource.inspect} which is an instance of "\
65
+ message = "one of #{possible_resource_types.keys.join(', ')} expected, " \
66
+ "got #{resource.inspect} which is an instance of " \
67
67
  "#{resource.class}(##{resource.class.object_id})"
68
68
  raise ActiveRecord::AssociationTypeMismatch, message
69
69
  end
@@ -132,7 +132,7 @@ module BelongsToOneOf
132
132
  raise InvalidParamsException, "expected a symbol, received #{classname}"
133
133
  end
134
134
 
135
- hash[classname] = "#{classname.to_s.underscore}_id".to_sym
135
+ hash[classname] = :"#{classname.to_s.underscore}_id"
136
136
  end
137
137
  elsif raw_possible_resource_types.is_a?(Hash)
138
138
  raw_possible_resource_types
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module BelongsToOneOf
4
- VERSION = "0.3.0"
4
+ VERSION = "1.0.0"
5
5
  end
@@ -32,22 +32,22 @@ module ActiveRecord
32
32
  )
33
33
 
34
34
  # validators
35
- define_method "belongs_to_exactly_one_#{resource_key}" do
35
+ define_method :"belongs_to_exactly_one_#{resource_key}" do
36
36
  config_model.validate_exactly_one_resource(self)
37
37
  end
38
38
 
39
- define_method "belongs_to_at_most_one_#{resource_key}" do
39
+ define_method :"belongs_to_at_most_one_#{resource_key}" do
40
40
  config_model.validate_at_most_one_resource(self)
41
41
  end
42
42
 
43
43
  if include_type_column
44
- define_method "#{resource_type_field}_matches_#{resource_key}" do
44
+ define_method :"#{resource_type_field}_matches_#{resource_key}" do
45
45
  config_model.validate_correct_resource_type(self)
46
46
  end
47
47
  end
48
48
 
49
49
  # setters
50
- define_method "#{resource_key}=" do |resource|
50
+ define_method :"#{resource_key}=" do |resource|
51
51
  config_model.resource_setter(resource, self)
52
52
  end
53
53
 
@@ -56,12 +56,12 @@ module ActiveRecord
56
56
  config_model.resource_getter(self)
57
57
  end
58
58
 
59
- define_method "#{resource_key}_id" do
59
+ define_method :"#{resource_key}_id" do
60
60
  config_model.resource_id_getter(self)
61
61
  end
62
62
 
63
63
  unless include_type_column
64
- define_method "#{resource_key}_type" do
64
+ define_method :"#{resource_key}_type" do
65
65
  config_model.resource_type_getter(self)
66
66
  end
67
67
  end
metadata CHANGED
@@ -1,151 +1,64 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: belongs_to_one_of
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - GoCardless Engineering
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2022-02-09 00:00:00.000000000 Z
10
+ date: 2025-01-30 00:00:00.000000000 Z
12
11
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: bundler
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: '0'
27
- - !ruby/object:Gem::Dependency
28
- name: gc_ruboconfig
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: 2.31.0
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: 2.31.0
41
- - !ruby/object:Gem::Dependency
42
- name: pry-byebug
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: rspec
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: '3.9'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: '3.9'
69
- - !ruby/object:Gem::Dependency
70
- name: rspec_junit_formatter
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - "~>"
74
- - !ruby/object:Gem::Version
75
- version: '0.4'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - "~>"
81
- - !ruby/object:Gem::Version
82
- version: '0.4'
83
- - !ruby/object:Gem::Dependency
84
- name: sqlite3
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - "~>"
88
- - !ruby/object:Gem::Version
89
- version: 1.4.1
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - "~>"
95
- - !ruby/object:Gem::Version
96
- version: 1.4.1
97
12
  - !ruby/object:Gem::Dependency
98
13
  name: activerecord
99
14
  requirement: !ruby/object:Gem::Requirement
100
15
  requirements:
101
16
  - - ">="
102
17
  - !ruby/object:Gem::Version
103
- version: '5.2'
18
+ version: '7.0'
104
19
  - - "<"
105
20
  - !ruby/object:Gem::Version
106
- version: '8'
21
+ version: '9'
107
22
  type: :runtime
108
23
  prerelease: false
109
24
  version_requirements: !ruby/object:Gem::Requirement
110
25
  requirements:
111
26
  - - ">="
112
27
  - !ruby/object:Gem::Version
113
- version: '5.2'
28
+ version: '7.0'
114
29
  - - "<"
115
30
  - !ruby/object:Gem::Version
116
- version: '8'
31
+ version: '9'
117
32
  - !ruby/object:Gem::Dependency
118
33
  name: activesupport
119
34
  requirement: !ruby/object:Gem::Requirement
120
35
  requirements:
121
36
  - - ">="
122
37
  - !ruby/object:Gem::Version
123
- version: '5.2'
38
+ version: '7.0'
124
39
  - - "<"
125
40
  - !ruby/object:Gem::Version
126
- version: '8'
41
+ version: '9'
127
42
  type: :runtime
128
43
  prerelease: false
129
44
  version_requirements: !ruby/object:Gem::Requirement
130
45
  requirements:
131
46
  - - ">="
132
47
  - !ruby/object:Gem::Version
133
- version: '5.2'
48
+ version: '7.0'
134
49
  - - "<"
135
50
  - !ruby/object:Gem::Version
136
- version: '8'
137
- description:
51
+ version: '9'
138
52
  email:
139
53
  - engineering@gocardless.com
140
54
  executables: []
141
55
  extensions: []
142
56
  extra_rdoc_files: []
143
57
  files:
144
- - ".circleci/config.yml"
145
58
  - ".github/dependabot.yml"
59
+ - ".github/workflows/tests.yml"
146
60
  - ".gitignore"
147
61
  - ".rubocop.yml"
148
- - ".rubocop_todo.yml"
149
62
  - ".ruby-version"
150
63
  - CHANGELOG.md
151
64
  - Gemfile
@@ -159,8 +72,8 @@ files:
159
72
  homepage: https://github.com/gocardless/belongs-to-one-of
160
73
  licenses:
161
74
  - MIT
162
- metadata: {}
163
- post_install_message:
75
+ metadata:
76
+ rubygems_mfa_required: 'true'
164
77
  rdoc_options: []
165
78
  require_paths:
166
79
  - lib
@@ -168,15 +81,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
168
81
  requirements:
169
82
  - - ">="
170
83
  - !ruby/object:Gem::Version
171
- version: '2.6'
84
+ version: '3.1'
172
85
  required_rubygems_version: !ruby/object:Gem::Requirement
173
86
  requirements:
174
87
  - - ">="
175
88
  - !ruby/object:Gem::Version
176
89
  version: '0'
177
90
  requirements: []
178
- rubygems_version: 3.2.22
179
- signing_key:
91
+ rubygems_version: 3.6.2
180
92
  specification_version: 4
181
93
  summary: A small library that helps with models which can have multiple parent model
182
94
  types
data/.circleci/config.yml DELETED
@@ -1,57 +0,0 @@
1
- version: 2.1
2
-
3
- jobs:
4
- test:
5
- parameters:
6
- ruby-version:
7
- type: string
8
- rails-version:
9
- type: string
10
-
11
- docker:
12
- - image: cimg/ruby:<<parameters.ruby-version>>
13
- environment:
14
- - RAILS_VERSION=<<parameters.rails-version>>
15
- steps:
16
- - checkout
17
-
18
- - run: gem install bundler
19
- - run: bundle install
20
-
21
- - run: |
22
- bundle exec rspec --profile 10 \
23
- --format RspecJunitFormatter \
24
- --out /tmp/test-results/rspec.xml \
25
- --format progress \
26
- spec
27
- - store_test_results:
28
- path: /tmp/test-results
29
-
30
- rubocop:
31
- docker:
32
- - image: cimg/ruby:3.1
33
- steps:
34
- - checkout
35
- - run: gem install bundler -v 2.3.4
36
- - run: bundle install
37
- - run:
38
- name: Rubocop
39
- command: bundle exec rubocop --parallel --extra-details --display-style-guide
40
-
41
- workflows:
42
- version: 2
43
- tests:
44
- jobs:
45
- - test:
46
- matrix:
47
- parameters:
48
- ruby-version: ["2.6", "2.7", "3.0", "3.1"]
49
- rails-version: ["5.2", "6.0", "6.1", "7.0"]
50
- exclude:
51
- - ruby-version: "3.0"
52
- rails-version: "5.2"
53
- - ruby-version: "3.1"
54
- rails-version: "5.2"
55
- - ruby-version: "2.6"
56
- rails-version: "7.0"
57
- - rubocop
data/.rubocop_todo.yml DELETED
@@ -1,16 +0,0 @@
1
- # This configuration was generated by
2
- # `rubocop --auto-gen-config`
3
- # on 2020-04-17 14:28:59 +0100 using RuboCop version 0.80.1.
4
- # The point is for the user to remove these configuration records
5
- # one by one as the offenses are removed from the code base.
6
- # Note that changes in the inspected code, or installation of new
7
- # versions of RuboCop, may require this file to be generated again.
8
-
9
- # Offense count: 2
10
- Metrics/AbcSize:
11
- Max: 22
12
-
13
- # Offense count: 3
14
- # Configuration parameters: CountComments, ExcludedMethods.
15
- Metrics/MethodLength:
16
- Max: 37