attr_json-associations 0.1.2 → 0.2.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 +4 -4
- data/.github/workflows/ci.yml +50 -13
- data/.gitignore +0 -0
- data/.rspec +0 -0
- data/CHANGELOG.md +9 -0
- data/Gemfile +4 -0
- data/LICENSE +0 -0
- data/README.md +4 -4
- data/Rakefile +0 -0
- data/attr_json-associations.gemspec +6 -5
- data/gemfiles/rails70.gemfile +14 -0
- data/gemfiles/rails71.gemfile +1 -0
- data/gemfiles/{rails61.gemfile → rails72.gemfile} +2 -1
- data/gemfiles/{rails60.gemfile → rails80.gemfile} +2 -2
- data/gemfiles/rails81.gemfile +9 -0
- data/lib/attr_json/associations/association/base.rb +0 -0
- data/lib/attr_json/associations/association/belongs_to.rb +0 -0
- data/lib/attr_json/associations/association/has_collection.rb +0 -0
- data/lib/attr_json/associations/association/has_many.rb +0 -0
- data/lib/attr_json/associations/association/has_one.rb +0 -0
- data/lib/attr_json/associations/definer.rb +23 -1
- data/lib/attr_json/associations/loader/base.rb +0 -0
- data/lib/attr_json/associations/loader/belongs_to.rb +0 -0
- data/lib/attr_json/associations/loader/has_collection.rb +0 -0
- data/lib/attr_json/associations/loader/has_many.rb +0 -0
- data/lib/attr_json/associations/loader/has_one.rb +0 -0
- data/lib/attr_json/associations/loader/order_by_case.rb +0 -0
- data/lib/attr_json/associations/model.rb +0 -0
- data/lib/attr_json/associations/record.rb +0 -0
- data/lib/attr_json/associations/version.rb +1 -1
- data/lib/attr_json/associations.rb +0 -0
- data/lib/attr_json-associations.rb +0 -0
- metadata +16 -32
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 364001e04ab5257a1a38332493abf5e8f96bbe9dc6166efdc74634ff829ba4ef
|
|
4
|
+
data.tar.gz: c71e6c55e9a895405e11a780bfa9697ecccdee983670354f0230c1091039189a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 3219055ded80bb5305ca782362bf28e9a3a1173fe620649b52b0d6644162fcca69692505e4a7fc93852765cf163fb5f1193d051f15fd58c8aa14b4a8658c12b1
|
|
7
|
+
data.tar.gz: 73723a32e72aa366d24d5a4fa6b294180449c5f564c65620f612194c172305482298cafa4148ecabff85260192cda1fb19092b70adb0a91c519546f93e52bb5a
|
data/.github/workflows/ci.yml
CHANGED
|
@@ -4,7 +4,7 @@ on: [push, pull_request]
|
|
|
4
4
|
|
|
5
5
|
jobs:
|
|
6
6
|
test:
|
|
7
|
-
runs-on: ubuntu-
|
|
7
|
+
runs-on: ubuntu-24.04
|
|
8
8
|
services:
|
|
9
9
|
postgres:
|
|
10
10
|
image: postgres:15
|
|
@@ -17,37 +17,74 @@ jobs:
|
|
|
17
17
|
strategy:
|
|
18
18
|
fail-fast: false
|
|
19
19
|
matrix:
|
|
20
|
-
ruby: [
|
|
21
|
-
gemfile: ['
|
|
22
|
-
attr_json: [
|
|
20
|
+
ruby: ['3.0', 3.1, 3.2, 3.3, 3.4, '4.0']
|
|
21
|
+
gemfile: ['rails70', 'rails71', 'rails72', 'rails80', 'rails81']
|
|
22
|
+
attr_json: ['2.0', 2.1, 2.2, 2.3, 2.4, 2.5, 2.6]
|
|
23
23
|
exclude:
|
|
24
|
-
-
|
|
25
|
-
gemfile:
|
|
26
|
-
-
|
|
27
|
-
gemfile:
|
|
28
|
-
-
|
|
29
|
-
gemfile:
|
|
30
|
-
-
|
|
24
|
+
- ruby: 3.0
|
|
25
|
+
gemfile: rails72
|
|
26
|
+
- ruby: 3.0
|
|
27
|
+
gemfile: rails80
|
|
28
|
+
- ruby: 3.0
|
|
29
|
+
gemfile: rails81
|
|
30
|
+
- ruby: 3.1
|
|
31
|
+
gemfile: rails80
|
|
32
|
+
- ruby: 3.1
|
|
33
|
+
gemfile: rails81
|
|
34
|
+
- attr_json: 2.0
|
|
31
35
|
gemfile: rails71
|
|
32
36
|
- attr_json: 2.0
|
|
37
|
+
gemfile: rails72
|
|
38
|
+
- attr_json: 2.0
|
|
39
|
+
gemfile: rails80
|
|
40
|
+
- attr_json: 2.0
|
|
41
|
+
gemfile: rails81
|
|
42
|
+
- attr_json: 2.1
|
|
33
43
|
gemfile: rails71
|
|
34
44
|
- attr_json: 2.1
|
|
45
|
+
gemfile: rails72
|
|
46
|
+
- attr_json: 2.1
|
|
47
|
+
gemfile: rails80
|
|
48
|
+
- attr_json: 2.1
|
|
49
|
+
gemfile: rails81
|
|
50
|
+
- attr_json: 2.2
|
|
35
51
|
gemfile: rails71
|
|
52
|
+
- attr_json: 2.2
|
|
53
|
+
gemfile: rails72
|
|
54
|
+
- attr_json: 2.2
|
|
55
|
+
gemfile: rails80
|
|
56
|
+
- attr_json: 2.2
|
|
57
|
+
gemfile: rails81
|
|
58
|
+
- attr_json: 2.3
|
|
59
|
+
gemfile: rails72
|
|
60
|
+
- attr_json: 2.3
|
|
61
|
+
gemfile: rails80
|
|
62
|
+
- attr_json: 2.3
|
|
63
|
+
gemfile: rails81
|
|
64
|
+
- attr_json: 2.4
|
|
65
|
+
gemfile: rails80
|
|
66
|
+
- attr_json: 2.4
|
|
67
|
+
gemfile: rails81
|
|
68
|
+
- attr_json: 2.5
|
|
69
|
+
gemfile: rails81
|
|
36
70
|
|
|
37
71
|
name: ruby ${{ matrix.ruby }}, ${{ matrix.gemfile }}, attr_json ${{ matrix.attr_json }}
|
|
38
72
|
|
|
39
73
|
env:
|
|
40
74
|
POSTGRES_USER: postgres
|
|
41
75
|
POSTGRES_PASSWORD: postgres
|
|
42
|
-
ATTR_JSON_VERSION: ${{ matrix.attr_json }}
|
|
76
|
+
ATTR_JSON_VERSION: ${{ matrix.attr_json }}.0
|
|
43
77
|
BUNDLE_GEMFILE: gemfiles/${{ matrix.gemfile }}.gemfile
|
|
44
78
|
|
|
45
79
|
steps:
|
|
46
|
-
- uses: actions/checkout@
|
|
80
|
+
- uses: actions/checkout@v7
|
|
47
81
|
- uses: ruby/setup-ruby@v1
|
|
48
82
|
with:
|
|
49
83
|
ruby-version: ${{ matrix.ruby }}
|
|
50
84
|
bundler-cache: true
|
|
85
|
+
- name: Bundle list
|
|
86
|
+
run: |
|
|
87
|
+
bundle list
|
|
51
88
|
- name: Prepare test
|
|
52
89
|
run: |
|
|
53
90
|
cd spec/dummy
|
data/.gitignore
CHANGED
|
File without changes
|
data/.rspec
CHANGED
|
File without changes
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
# CHANGELOG
|
|
2
2
|
|
|
3
|
+
## 0.2.1
|
|
4
|
+
|
|
5
|
+
* Prepend module to overwrite association methods.
|
|
6
|
+
|
|
7
|
+
## 0.2.0
|
|
8
|
+
|
|
9
|
+
* Clear cache if FK value is changed for belongs_to association.
|
|
10
|
+
* Drop support for ruby <= 2.7, rails <= 6.1, attr_json <= 1.5.
|
|
11
|
+
|
|
3
12
|
## 0.1.2
|
|
4
13
|
|
|
5
14
|
* Add `frozen_string_literal: true`.
|
data/Gemfile
CHANGED
data/LICENSE
CHANGED
|
File without changes
|
data/README.md
CHANGED
|
@@ -4,10 +4,10 @@ A simple association extension for [attr_json](https://github.com/jrochkind/attr
|
|
|
4
4
|
|
|
5
5
|
## Dependencies
|
|
6
6
|
|
|
7
|
-
* ruby
|
|
8
|
-
* attr_json
|
|
9
|
-
* activerecord
|
|
10
|
-
* activesupport
|
|
7
|
+
* ruby 3.0+
|
|
8
|
+
* attr_json 2.0+
|
|
9
|
+
* activerecord 7.0+
|
|
10
|
+
* activesupport 7.0+
|
|
11
11
|
|
|
12
12
|
## Installation
|
|
13
13
|
|
data/Rakefile
CHANGED
|
File without changes
|
|
@@ -17,12 +17,13 @@ Gem::Specification.new do |spec|
|
|
|
17
17
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
18
18
|
spec.require_paths = ["lib"]
|
|
19
19
|
|
|
20
|
-
spec.
|
|
21
|
-
|
|
22
|
-
spec.add_dependency "
|
|
20
|
+
spec.required_ruby_version = ">= 3.0"
|
|
21
|
+
|
|
22
|
+
spec.add_dependency "attr_json", ">= 2.0"
|
|
23
|
+
spec.add_dependency "activerecord", ">= 7.0"
|
|
24
|
+
spec.add_dependency "activesupport", ">= 7.0"
|
|
23
25
|
|
|
24
|
-
spec.add_development_dependency "rails", ">= 6.0"
|
|
25
|
-
spec.add_development_dependency "pg"
|
|
26
26
|
spec.add_development_dependency "rspec-rails"
|
|
27
27
|
spec.add_development_dependency "simplecov"
|
|
28
|
+
spec.add_development_dependency "logger"
|
|
28
29
|
end
|
data/gemfiles/rails70.gemfile
CHANGED
|
@@ -1,6 +1,20 @@
|
|
|
1
1
|
source 'https://rubygems.org'
|
|
2
2
|
|
|
3
3
|
gem "rails", "~> 7.0.1"
|
|
4
|
+
gem "pg"
|
|
4
5
|
gem "attr_json", "~> #{ENV['ATTR_JSON_VERSION']}"
|
|
5
6
|
|
|
7
|
+
gem "concurrent-ruby", "<= 1.3.4"
|
|
8
|
+
|
|
9
|
+
if RUBY_VERSION >= "3.4"
|
|
10
|
+
gem "base64"
|
|
11
|
+
gem "bigdecimal"
|
|
12
|
+
gem "drb"
|
|
13
|
+
gem "mutex_m"
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
if RUBY_VERSION >= "4.0"
|
|
17
|
+
gem "tsort"
|
|
18
|
+
end
|
|
19
|
+
|
|
6
20
|
gemspec path: "../"
|
data/gemfiles/rails71.gemfile
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -17,13 +17,35 @@ module AttrJson::Associations
|
|
|
17
17
|
|
|
18
18
|
def call
|
|
19
19
|
@klass.attr_json_associations = @klass.attr_json_associations.merge(@assoc.name => @assoc)
|
|
20
|
-
|
|
20
|
+
generated_association_methods.class_eval <<-RUBY, __FILE__, __LINE__ + 1
|
|
21
21
|
def #{@assoc.name}
|
|
22
22
|
assoc = self.class.attr_json_associations[:#{@assoc.name}]
|
|
23
23
|
@attr_json_associations_cache[:#{@assoc.name}] ||=
|
|
24
24
|
AttrJson::Associations::Loader::#{@type.to_s.classify}.new(assoc, self).call
|
|
25
25
|
end
|
|
26
26
|
RUBY
|
|
27
|
+
|
|
28
|
+
if @assoc.is_a?(AttrJson::Associations::Association::BelongsTo)
|
|
29
|
+
generated_association_methods.class_eval <<-RUBY, __FILE__, __LINE__ + 1
|
|
30
|
+
def #{@assoc.foreign_key}=(val)
|
|
31
|
+
super.tap do
|
|
32
|
+
@attr_json_associations_cache[:#{@assoc.name}] = nil
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
RUBY
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
private
|
|
40
|
+
|
|
41
|
+
def generated_association_methods
|
|
42
|
+
if @klass.const_defined?(:AttrJsonAssociationsMethods, false)
|
|
43
|
+
@klass.const_get(:AttrJsonAssociationsMethods, false)
|
|
44
|
+
else
|
|
45
|
+
@klass.const_set(:AttrJsonAssociationsMethods, Module.new).tap do |mod|
|
|
46
|
+
@klass.prepend mod
|
|
47
|
+
end
|
|
48
|
+
end
|
|
27
49
|
end
|
|
28
50
|
end
|
|
29
51
|
end
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
metadata
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: attr_json-associations
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1
|
|
4
|
+
version: 0.2.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Yoshikazu Kaneta
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: exe
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
13
|
name: attr_json
|
|
@@ -16,58 +15,44 @@ dependencies:
|
|
|
16
15
|
requirements:
|
|
17
16
|
- - ">="
|
|
18
17
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: '
|
|
18
|
+
version: '2.0'
|
|
20
19
|
type: :runtime
|
|
21
20
|
prerelease: false
|
|
22
21
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
22
|
requirements:
|
|
24
23
|
- - ">="
|
|
25
24
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: '
|
|
25
|
+
version: '2.0'
|
|
27
26
|
- !ruby/object:Gem::Dependency
|
|
28
27
|
name: activerecord
|
|
29
28
|
requirement: !ruby/object:Gem::Requirement
|
|
30
29
|
requirements:
|
|
31
30
|
- - ">="
|
|
32
31
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: '
|
|
32
|
+
version: '7.0'
|
|
34
33
|
type: :runtime
|
|
35
34
|
prerelease: false
|
|
36
35
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
36
|
requirements:
|
|
38
37
|
- - ">="
|
|
39
38
|
- !ruby/object:Gem::Version
|
|
40
|
-
version: '
|
|
39
|
+
version: '7.0'
|
|
41
40
|
- !ruby/object:Gem::Dependency
|
|
42
41
|
name: activesupport
|
|
43
42
|
requirement: !ruby/object:Gem::Requirement
|
|
44
43
|
requirements:
|
|
45
44
|
- - ">="
|
|
46
45
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: '
|
|
46
|
+
version: '7.0'
|
|
48
47
|
type: :runtime
|
|
49
48
|
prerelease: false
|
|
50
49
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
50
|
requirements:
|
|
52
51
|
- - ">="
|
|
53
52
|
- !ruby/object:Gem::Version
|
|
54
|
-
version: '
|
|
53
|
+
version: '7.0'
|
|
55
54
|
- !ruby/object:Gem::Dependency
|
|
56
|
-
name: rails
|
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
|
58
|
-
requirements:
|
|
59
|
-
- - ">="
|
|
60
|
-
- !ruby/object:Gem::Version
|
|
61
|
-
version: '6.0'
|
|
62
|
-
type: :development
|
|
63
|
-
prerelease: false
|
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
-
requirements:
|
|
66
|
-
- - ">="
|
|
67
|
-
- !ruby/object:Gem::Version
|
|
68
|
-
version: '6.0'
|
|
69
|
-
- !ruby/object:Gem::Dependency
|
|
70
|
-
name: pg
|
|
55
|
+
name: rspec-rails
|
|
71
56
|
requirement: !ruby/object:Gem::Requirement
|
|
72
57
|
requirements:
|
|
73
58
|
- - ">="
|
|
@@ -81,7 +66,7 @@ dependencies:
|
|
|
81
66
|
- !ruby/object:Gem::Version
|
|
82
67
|
version: '0'
|
|
83
68
|
- !ruby/object:Gem::Dependency
|
|
84
|
-
name:
|
|
69
|
+
name: simplecov
|
|
85
70
|
requirement: !ruby/object:Gem::Requirement
|
|
86
71
|
requirements:
|
|
87
72
|
- - ">="
|
|
@@ -95,7 +80,7 @@ dependencies:
|
|
|
95
80
|
- !ruby/object:Gem::Version
|
|
96
81
|
version: '0'
|
|
97
82
|
- !ruby/object:Gem::Dependency
|
|
98
|
-
name:
|
|
83
|
+
name: logger
|
|
99
84
|
requirement: !ruby/object:Gem::Requirement
|
|
100
85
|
requirements:
|
|
101
86
|
- - ">="
|
|
@@ -124,10 +109,11 @@ files:
|
|
|
124
109
|
- README.md
|
|
125
110
|
- Rakefile
|
|
126
111
|
- attr_json-associations.gemspec
|
|
127
|
-
- gemfiles/rails60.gemfile
|
|
128
|
-
- gemfiles/rails61.gemfile
|
|
129
112
|
- gemfiles/rails70.gemfile
|
|
130
113
|
- gemfiles/rails71.gemfile
|
|
114
|
+
- gemfiles/rails72.gemfile
|
|
115
|
+
- gemfiles/rails80.gemfile
|
|
116
|
+
- gemfiles/rails81.gemfile
|
|
131
117
|
- lib/attr_json-associations.rb
|
|
132
118
|
- lib/attr_json/associations.rb
|
|
133
119
|
- lib/attr_json/associations/association/base.rb
|
|
@@ -148,7 +134,6 @@ files:
|
|
|
148
134
|
homepage: https://github.com/kanety/attr_json-associations
|
|
149
135
|
licenses: []
|
|
150
136
|
metadata: {}
|
|
151
|
-
post_install_message:
|
|
152
137
|
rdoc_options: []
|
|
153
138
|
require_paths:
|
|
154
139
|
- lib
|
|
@@ -156,15 +141,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
156
141
|
requirements:
|
|
157
142
|
- - ">="
|
|
158
143
|
- !ruby/object:Gem::Version
|
|
159
|
-
version: '0'
|
|
144
|
+
version: '3.0'
|
|
160
145
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
161
146
|
requirements:
|
|
162
147
|
- - ">="
|
|
163
148
|
- !ruby/object:Gem::Version
|
|
164
149
|
version: '0'
|
|
165
150
|
requirements: []
|
|
166
|
-
rubygems_version:
|
|
167
|
-
signing_key:
|
|
151
|
+
rubygems_version: 4.0.10
|
|
168
152
|
specification_version: 4
|
|
169
153
|
summary: An association extension for attr_json
|
|
170
154
|
test_files: []
|