jbuilder-schema 2.1.0 → 2.3.0
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/Gemfile.lock +123 -102
- data/README.md +0 -3
- data/lib/jbuilder/schema/renderer.rb +11 -4
- data/lib/jbuilder/schema/template.rb +25 -9
- data/lib/jbuilder/schema/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f7d989f5d37de77b8e1a0dc0703619f334f3d5605ec3458b6508d2f1712241d9
|
|
4
|
+
data.tar.gz: 11c116736ae75e9c5e6cca37cd244a538ca68feb3d168d8b2c01861b26515cb4
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c069b534a6f5f044193c9fb9432b104e66d7d6d158b2969bea0ceb33be4db85dc178b5d971b3efab75bec54c21d5c05050aa2eeebc8546a86a5f27aaf3ddd41e
|
|
7
|
+
data.tar.gz: 8738536e32a3db5a21037b32acf91a6dcc59b2e69745046ab8d68d03ab847979f36f80801f9be6927276eda7fe8ad1f2573838813575d4ac5802a8294b635097
|
data/Gemfile.lock
CHANGED
|
@@ -1,184 +1,205 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
jbuilder-schema (2.
|
|
4
|
+
jbuilder-schema (2.3.0)
|
|
5
5
|
jbuilder
|
|
6
6
|
rails (>= 5.0.0)
|
|
7
7
|
|
|
8
8
|
GEM
|
|
9
9
|
remote: https://rubygems.org/
|
|
10
10
|
specs:
|
|
11
|
-
actioncable (7.0.
|
|
12
|
-
actionpack (= 7.0.
|
|
13
|
-
activesupport (= 7.0.
|
|
11
|
+
actioncable (7.0.8)
|
|
12
|
+
actionpack (= 7.0.8)
|
|
13
|
+
activesupport (= 7.0.8)
|
|
14
14
|
nio4r (~> 2.0)
|
|
15
15
|
websocket-driver (>= 0.6.1)
|
|
16
|
-
actionmailbox (7.0.
|
|
17
|
-
actionpack (= 7.0.
|
|
18
|
-
activejob (= 7.0.
|
|
19
|
-
activerecord (= 7.0.
|
|
20
|
-
activestorage (= 7.0.
|
|
21
|
-
activesupport (= 7.0.
|
|
16
|
+
actionmailbox (7.0.8)
|
|
17
|
+
actionpack (= 7.0.8)
|
|
18
|
+
activejob (= 7.0.8)
|
|
19
|
+
activerecord (= 7.0.8)
|
|
20
|
+
activestorage (= 7.0.8)
|
|
21
|
+
activesupport (= 7.0.8)
|
|
22
22
|
mail (>= 2.7.1)
|
|
23
23
|
net-imap
|
|
24
24
|
net-pop
|
|
25
25
|
net-smtp
|
|
26
|
-
actionmailer (7.0.
|
|
27
|
-
actionpack (= 7.0.
|
|
28
|
-
actionview (= 7.0.
|
|
29
|
-
activejob (= 7.0.
|
|
30
|
-
activesupport (= 7.0.
|
|
26
|
+
actionmailer (7.0.8)
|
|
27
|
+
actionpack (= 7.0.8)
|
|
28
|
+
actionview (= 7.0.8)
|
|
29
|
+
activejob (= 7.0.8)
|
|
30
|
+
activesupport (= 7.0.8)
|
|
31
31
|
mail (~> 2.5, >= 2.5.4)
|
|
32
32
|
net-imap
|
|
33
33
|
net-pop
|
|
34
34
|
net-smtp
|
|
35
35
|
rails-dom-testing (~> 2.0)
|
|
36
|
-
actionpack (7.0.
|
|
37
|
-
actionview (= 7.0.
|
|
38
|
-
activesupport (= 7.0.
|
|
39
|
-
rack (~> 2.0, >= 2.2.
|
|
36
|
+
actionpack (7.0.8)
|
|
37
|
+
actionview (= 7.0.8)
|
|
38
|
+
activesupport (= 7.0.8)
|
|
39
|
+
rack (~> 2.0, >= 2.2.4)
|
|
40
40
|
rack-test (>= 0.6.3)
|
|
41
41
|
rails-dom-testing (~> 2.0)
|
|
42
42
|
rails-html-sanitizer (~> 1.0, >= 1.2.0)
|
|
43
|
-
actiontext (7.0.
|
|
44
|
-
actionpack (= 7.0.
|
|
45
|
-
activerecord (= 7.0.
|
|
46
|
-
activestorage (= 7.0.
|
|
47
|
-
activesupport (= 7.0.
|
|
43
|
+
actiontext (7.0.8)
|
|
44
|
+
actionpack (= 7.0.8)
|
|
45
|
+
activerecord (= 7.0.8)
|
|
46
|
+
activestorage (= 7.0.8)
|
|
47
|
+
activesupport (= 7.0.8)
|
|
48
48
|
globalid (>= 0.6.0)
|
|
49
49
|
nokogiri (>= 1.8.5)
|
|
50
|
-
actionview (7.0.
|
|
51
|
-
activesupport (= 7.0.
|
|
50
|
+
actionview (7.0.8)
|
|
51
|
+
activesupport (= 7.0.8)
|
|
52
52
|
builder (~> 3.1)
|
|
53
53
|
erubi (~> 1.4)
|
|
54
54
|
rails-dom-testing (~> 2.0)
|
|
55
55
|
rails-html-sanitizer (~> 1.1, >= 1.2.0)
|
|
56
|
-
activejob (7.0.
|
|
57
|
-
activesupport (= 7.0.
|
|
56
|
+
activejob (7.0.8)
|
|
57
|
+
activesupport (= 7.0.8)
|
|
58
58
|
globalid (>= 0.3.6)
|
|
59
|
-
activemodel (7.0.
|
|
60
|
-
activesupport (= 7.0.
|
|
61
|
-
activerecord (7.0.
|
|
62
|
-
activemodel (= 7.0.
|
|
63
|
-
activesupport (= 7.0.
|
|
64
|
-
activestorage (7.0.
|
|
65
|
-
actionpack (= 7.0.
|
|
66
|
-
activejob (= 7.0.
|
|
67
|
-
activerecord (= 7.0.
|
|
68
|
-
activesupport (= 7.0.
|
|
59
|
+
activemodel (7.0.8)
|
|
60
|
+
activesupport (= 7.0.8)
|
|
61
|
+
activerecord (7.0.8)
|
|
62
|
+
activemodel (= 7.0.8)
|
|
63
|
+
activesupport (= 7.0.8)
|
|
64
|
+
activestorage (7.0.8)
|
|
65
|
+
actionpack (= 7.0.8)
|
|
66
|
+
activejob (= 7.0.8)
|
|
67
|
+
activerecord (= 7.0.8)
|
|
68
|
+
activesupport (= 7.0.8)
|
|
69
69
|
marcel (~> 1.0)
|
|
70
70
|
mini_mime (>= 1.1.0)
|
|
71
|
-
activesupport (7.0.
|
|
71
|
+
activesupport (7.0.8)
|
|
72
72
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
|
73
73
|
i18n (>= 1.6, < 2)
|
|
74
74
|
minitest (>= 5.1)
|
|
75
75
|
tzinfo (~> 2.0)
|
|
76
76
|
ast (2.4.2)
|
|
77
|
+
base64 (0.1.1)
|
|
77
78
|
builder (3.2.4)
|
|
78
|
-
concurrent-ruby (1.
|
|
79
|
+
concurrent-ruby (1.2.2)
|
|
79
80
|
crass (1.0.6)
|
|
81
|
+
date (3.3.3)
|
|
80
82
|
erubi (1.12.0)
|
|
81
|
-
globalid (1.
|
|
82
|
-
activesupport (>=
|
|
83
|
-
i18n (1.
|
|
83
|
+
globalid (1.2.1)
|
|
84
|
+
activesupport (>= 6.1)
|
|
85
|
+
i18n (1.14.1)
|
|
84
86
|
concurrent-ruby (~> 1.0)
|
|
85
87
|
jbuilder (2.11.5)
|
|
86
88
|
actionview (>= 5.0.0)
|
|
87
89
|
activesupport (>= 5.0.0)
|
|
88
|
-
json (2.6.
|
|
89
|
-
|
|
90
|
+
json (2.6.3)
|
|
91
|
+
language_server-protocol (3.17.0.3)
|
|
92
|
+
lint_roller (1.1.0)
|
|
93
|
+
loofah (2.21.3)
|
|
90
94
|
crass (~> 1.0.2)
|
|
91
|
-
nokogiri (>= 1.
|
|
92
|
-
mail (2.8.
|
|
95
|
+
nokogiri (>= 1.12.0)
|
|
96
|
+
mail (2.8.1)
|
|
93
97
|
mini_mime (>= 0.1.1)
|
|
94
98
|
net-imap
|
|
95
99
|
net-pop
|
|
96
100
|
net-smtp
|
|
97
101
|
marcel (1.0.2)
|
|
98
102
|
method_source (1.0.0)
|
|
99
|
-
mini_mime (1.1.
|
|
100
|
-
mini_portile2 (2.8.
|
|
101
|
-
minitest (5.
|
|
102
|
-
mocha (1.
|
|
103
|
-
|
|
103
|
+
mini_mime (1.1.5)
|
|
104
|
+
mini_portile2 (2.8.4)
|
|
105
|
+
minitest (5.20.0)
|
|
106
|
+
mocha (2.1.0)
|
|
107
|
+
ruby2_keywords (>= 0.0.5)
|
|
108
|
+
net-imap (0.3.7)
|
|
109
|
+
date
|
|
104
110
|
net-protocol
|
|
105
111
|
net-pop (0.1.2)
|
|
106
112
|
net-protocol
|
|
107
113
|
net-protocol (0.2.1)
|
|
108
114
|
timeout
|
|
109
|
-
net-smtp (0.
|
|
115
|
+
net-smtp (0.4.0)
|
|
110
116
|
net-protocol
|
|
111
|
-
nio4r (2.5.
|
|
112
|
-
nokogiri (1.
|
|
113
|
-
mini_portile2 (~> 2.8.
|
|
117
|
+
nio4r (2.5.9)
|
|
118
|
+
nokogiri (1.15.4)
|
|
119
|
+
mini_portile2 (~> 2.8.2)
|
|
114
120
|
racc (~> 1.4)
|
|
115
|
-
parallel (1.
|
|
116
|
-
parser (3.
|
|
121
|
+
parallel (1.23.0)
|
|
122
|
+
parser (3.2.2.3)
|
|
117
123
|
ast (~> 2.4.1)
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
rack
|
|
124
|
+
racc
|
|
125
|
+
racc (1.7.1)
|
|
126
|
+
rack (2.2.8)
|
|
127
|
+
rack-test (2.1.0)
|
|
121
128
|
rack (>= 1.3)
|
|
122
|
-
rails (7.0.
|
|
123
|
-
actioncable (= 7.0.
|
|
124
|
-
actionmailbox (= 7.0.
|
|
125
|
-
actionmailer (= 7.0.
|
|
126
|
-
actionpack (= 7.0.
|
|
127
|
-
actiontext (= 7.0.
|
|
128
|
-
actionview (= 7.0.
|
|
129
|
-
activejob (= 7.0.
|
|
130
|
-
activemodel (= 7.0.
|
|
131
|
-
activerecord (= 7.0.
|
|
132
|
-
activestorage (= 7.0.
|
|
133
|
-
activesupport (= 7.0.
|
|
129
|
+
rails (7.0.8)
|
|
130
|
+
actioncable (= 7.0.8)
|
|
131
|
+
actionmailbox (= 7.0.8)
|
|
132
|
+
actionmailer (= 7.0.8)
|
|
133
|
+
actionpack (= 7.0.8)
|
|
134
|
+
actiontext (= 7.0.8)
|
|
135
|
+
actionview (= 7.0.8)
|
|
136
|
+
activejob (= 7.0.8)
|
|
137
|
+
activemodel (= 7.0.8)
|
|
138
|
+
activerecord (= 7.0.8)
|
|
139
|
+
activestorage (= 7.0.8)
|
|
140
|
+
activesupport (= 7.0.8)
|
|
134
141
|
bundler (>= 1.15.0)
|
|
135
|
-
railties (= 7.0.
|
|
136
|
-
rails-dom-testing (2.0
|
|
137
|
-
activesupport (>=
|
|
142
|
+
railties (= 7.0.8)
|
|
143
|
+
rails-dom-testing (2.2.0)
|
|
144
|
+
activesupport (>= 5.0.0)
|
|
145
|
+
minitest
|
|
138
146
|
nokogiri (>= 1.6)
|
|
139
|
-
rails-html-sanitizer (1.
|
|
140
|
-
loofah (~> 2.
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
147
|
+
rails-html-sanitizer (1.6.0)
|
|
148
|
+
loofah (~> 2.21)
|
|
149
|
+
nokogiri (~> 1.14)
|
|
150
|
+
railties (7.0.8)
|
|
151
|
+
actionpack (= 7.0.8)
|
|
152
|
+
activesupport (= 7.0.8)
|
|
144
153
|
method_source
|
|
145
154
|
rake (>= 12.2)
|
|
146
155
|
thor (~> 1.0)
|
|
147
156
|
zeitwerk (~> 2.5)
|
|
148
157
|
rainbow (3.1.1)
|
|
149
158
|
rake (13.0.6)
|
|
150
|
-
regexp_parser (2.
|
|
151
|
-
rexml (3.2.
|
|
152
|
-
rubocop (1.
|
|
159
|
+
regexp_parser (2.8.1)
|
|
160
|
+
rexml (3.2.6)
|
|
161
|
+
rubocop (1.56.3)
|
|
162
|
+
base64 (~> 0.1.1)
|
|
153
163
|
json (~> 2.3)
|
|
164
|
+
language_server-protocol (>= 3.17.0)
|
|
154
165
|
parallel (~> 1.10)
|
|
155
|
-
parser (>= 3.
|
|
166
|
+
parser (>= 3.2.2.3)
|
|
156
167
|
rainbow (>= 2.2.2, < 4.0)
|
|
157
168
|
regexp_parser (>= 1.8, < 3.0)
|
|
158
169
|
rexml (>= 3.2.5, < 4.0)
|
|
159
|
-
rubocop-ast (>= 1.
|
|
170
|
+
rubocop-ast (>= 1.28.1, < 2.0)
|
|
160
171
|
ruby-progressbar (~> 1.7)
|
|
161
|
-
unicode-display_width (>=
|
|
162
|
-
rubocop-ast (1.
|
|
163
|
-
parser (>= 3.
|
|
164
|
-
rubocop-performance (1.
|
|
172
|
+
unicode-display_width (>= 2.4.0, < 3.0)
|
|
173
|
+
rubocop-ast (1.29.0)
|
|
174
|
+
parser (>= 3.2.1.0)
|
|
175
|
+
rubocop-performance (1.19.1)
|
|
165
176
|
rubocop (>= 1.7.0, < 2.0)
|
|
166
177
|
rubocop-ast (>= 0.4.0)
|
|
167
|
-
ruby-progressbar (1.
|
|
168
|
-
|
|
178
|
+
ruby-progressbar (1.13.0)
|
|
179
|
+
ruby2_keywords (0.0.5)
|
|
180
|
+
sqlite3 (1.6.6)
|
|
169
181
|
mini_portile2 (~> 2.8.0)
|
|
170
|
-
standard (1.
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
182
|
+
standard (1.31.1)
|
|
183
|
+
language_server-protocol (~> 3.17.0.2)
|
|
184
|
+
lint_roller (~> 1.0)
|
|
185
|
+
rubocop (~> 1.56.2)
|
|
186
|
+
standard-custom (~> 1.0.0)
|
|
187
|
+
standard-performance (~> 1.2)
|
|
188
|
+
standard-custom (1.0.2)
|
|
189
|
+
lint_roller (~> 1.0)
|
|
190
|
+
rubocop (~> 1.50)
|
|
191
|
+
standard-performance (1.2.0)
|
|
192
|
+
lint_roller (~> 1.1)
|
|
193
|
+
rubocop-performance (~> 1.19.0)
|
|
194
|
+
thor (1.2.2)
|
|
195
|
+
timeout (0.4.0)
|
|
196
|
+
tzinfo (2.0.6)
|
|
176
197
|
concurrent-ruby (~> 1.0)
|
|
177
|
-
unicode-display_width (2.2
|
|
178
|
-
websocket-driver (0.7.
|
|
198
|
+
unicode-display_width (2.4.2)
|
|
199
|
+
websocket-driver (0.7.6)
|
|
179
200
|
websocket-extensions (>= 0.1.0)
|
|
180
201
|
websocket-extensions (0.1.5)
|
|
181
|
-
zeitwerk (2.6.
|
|
202
|
+
zeitwerk (2.6.11)
|
|
182
203
|
|
|
183
204
|
PLATFORMS
|
|
184
205
|
ruby
|
|
@@ -191,4 +212,4 @@ DEPENDENCIES
|
|
|
191
212
|
standard (~> 1.3)
|
|
192
213
|
|
|
193
214
|
BUNDLED WITH
|
|
194
|
-
2.
|
|
215
|
+
2.4.10
|
data/README.md
CHANGED
|
@@ -2,9 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
Generate JSON Schema compatible with OpenAPI 3 specs from Jbuilder files
|
|
4
4
|
|
|
5
|
-
[](https://github.com/bullet-train-co/jbuilder-schema/actions)
|
|
6
|
-
[](https://github.com/bullet-train-co/jbuilder-schema/actions)
|
|
7
|
-
|
|
8
5
|
## Installation
|
|
9
6
|
|
|
10
7
|
In your Gemfile, put `gem "jbuilder-schema"` after Jbuilder:
|
|
@@ -21,14 +21,21 @@ class Jbuilder::Schema::Renderer
|
|
|
21
21
|
def render(object = nil, title: nil, description: nil, assigns: nil, **options)
|
|
22
22
|
@view_renderer.assign assigns if assigns
|
|
23
23
|
|
|
24
|
-
json = original_render(object || options.dup, options.dup)
|
|
25
|
-
|
|
26
24
|
partial_path = %i[to_partial_path_for_jbuilder_schema to_partial_path].map { object.public_send(_1) if object.respond_to?(_1) }.compact.first
|
|
27
|
-
|
|
25
|
+
if partial_path
|
|
26
|
+
options[:partial] = partial_path
|
|
27
|
+
options[:object] = object
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
json = if partial_path
|
|
31
|
+
original_render(options.dup, options.dup)
|
|
32
|
+
else
|
|
33
|
+
original_render(object || options.dup, options.dup)
|
|
34
|
+
end
|
|
28
35
|
|
|
29
36
|
options[:locals] ||= {}
|
|
30
37
|
options[:locals].merge! @default_locals if @default_locals
|
|
31
|
-
options[:locals][:__jbuilder_schema_options] = {
|
|
38
|
+
options[:locals][:__jbuilder_schema_options] = {json: json, object: object, title: title, description: description}
|
|
32
39
|
|
|
33
40
|
@view_renderer.render(options)
|
|
34
41
|
end
|
|
@@ -41,6 +41,7 @@ class Jbuilder::Schema
|
|
|
41
41
|
end
|
|
42
42
|
|
|
43
43
|
private
|
|
44
|
+
|
|
44
45
|
def translate(key)
|
|
45
46
|
I18n.t(key, scope: @scope ||= object&.class&.name&.underscore&.pluralize)
|
|
46
47
|
end
|
|
@@ -58,10 +59,15 @@ class Jbuilder::Schema
|
|
|
58
59
|
end
|
|
59
60
|
|
|
60
61
|
def schema!
|
|
61
|
-
|
|
62
|
+
# TODO: Not sure why it was like that, when it was meant to be used,
|
|
63
|
+
# but that seems to fix the problem with disappearance of root properties
|
|
64
|
+
# https://github.com/bullet-train-co/jbuilder-schema/issues/46
|
|
65
|
+
# if ([@attributes] + @attributes.each_value.grep(::Hash)).any? { _1[:type] == :array && _1.key?(:items) }
|
|
66
|
+
|
|
67
|
+
if [@attributes, *@attributes.first].select { |a| a.is_a?(::Hash) && a[:type] == :array && a.key?(:items) }.any?
|
|
62
68
|
@attributes
|
|
63
69
|
else
|
|
64
|
-
_object(@attributes)
|
|
70
|
+
_object(@attributes, _required!(@attributes.keys))
|
|
65
71
|
end.merge(example: @json).compact
|
|
66
72
|
end
|
|
67
73
|
|
|
@@ -74,6 +80,8 @@ class Jbuilder::Schema
|
|
|
74
80
|
# Detect `json.articles user.articles` to override Jbuilder's logic, which wouldn't hit `array!` and set a `type: :array, items: {"$ref": "#/components/schemas/article"}` ref.
|
|
75
81
|
if block.nil? && keys.blank? && _is_collection?(value) && (value.empty? || value.all? { _is_active_model?(_1) })
|
|
76
82
|
_set_value(key, _scope { _set_ref(key.to_s.singularize, array: true) })
|
|
83
|
+
elsif _partial_options?(options)
|
|
84
|
+
_set_value(key, _scope { _set_ref(options[:as].to_s, array: _is_collection?(value)) })
|
|
77
85
|
else
|
|
78
86
|
super(key, value, *keys, **options, &block)
|
|
79
87
|
end
|
|
@@ -81,6 +89,7 @@ class Jbuilder::Schema
|
|
|
81
89
|
ensure
|
|
82
90
|
@configuration = old_configuration if old_configuration
|
|
83
91
|
end
|
|
92
|
+
|
|
84
93
|
alias_method :method_missing, :set! # TODO: Remove once Jbuilder passes keyword arguments along to `set!` in its `method_missing`.
|
|
85
94
|
|
|
86
95
|
def array!(collection = [], *args, schema: nil, **options, &block)
|
|
@@ -128,13 +137,20 @@ class Jbuilder::Schema
|
|
|
128
137
|
@schema_overrides = old_schema_overrides if overrides
|
|
129
138
|
end
|
|
130
139
|
|
|
131
|
-
def _object(attributes)
|
|
140
|
+
def _object(attributes, required)
|
|
132
141
|
{
|
|
133
142
|
type: :object,
|
|
134
143
|
title: @configuration.title,
|
|
135
144
|
description: @configuration.description,
|
|
136
|
-
required:
|
|
137
|
-
properties: attributes
|
|
145
|
+
required: required,
|
|
146
|
+
properties: _nullify_non_required_types(attributes, required)
|
|
147
|
+
}
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
def _nullify_non_required_types(attributes, required)
|
|
151
|
+
attributes.transform_values! {
|
|
152
|
+
_1[:type] = [_1[:type], "null"] unless required.include?(attributes.key(_1))
|
|
153
|
+
_1
|
|
138
154
|
}
|
|
139
155
|
end
|
|
140
156
|
|
|
@@ -183,8 +199,8 @@ class Jbuilder::Schema
|
|
|
183
199
|
options
|
|
184
200
|
end
|
|
185
201
|
|
|
186
|
-
def _primitive_type(
|
|
187
|
-
case
|
|
202
|
+
def _primitive_type(value)
|
|
203
|
+
case value
|
|
188
204
|
when ::Array then :array
|
|
189
205
|
when ::Float, ::BigDecimal then :number
|
|
190
206
|
when true, false then :boolean
|
|
@@ -202,7 +218,7 @@ class Jbuilder::Schema
|
|
|
202
218
|
|
|
203
219
|
def _required!(keys)
|
|
204
220
|
presence_validated_attributes = @configuration.object&.class.try(:validators).to_a.flat_map { _1.attributes if _1.is_a?(::ActiveRecord::Validations::PresenceValidator) }
|
|
205
|
-
keys & [_key(:id), *presence_validated_attributes.
|
|
221
|
+
keys & [_key(:id), *presence_validated_attributes.flat_map { [_key(_1), _key("#{_1}_id")] }]
|
|
206
222
|
end
|
|
207
223
|
|
|
208
224
|
###
|
|
@@ -218,7 +234,7 @@ class Jbuilder::Schema
|
|
|
218
234
|
raise NullError.build(key) if current_value.nil?
|
|
219
235
|
|
|
220
236
|
value = _scope { yield self }
|
|
221
|
-
value = _object(value) unless value[:type] == :array || value.key?(:$ref)
|
|
237
|
+
value = _object(value, _required!(value.keys)) unless value[:type] == :array || value.key?(:$ref)
|
|
222
238
|
_merge_values(current_value, value)
|
|
223
239
|
end
|
|
224
240
|
end
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
# We can't use the standard `Jbuilder::Schema::VERSION =` because
|
|
2
2
|
# `Jbuilder` isn't a regular module namespace, but a class …which also loads Active Support.
|
|
3
3
|
# So we use trickery, and assign the proper version once `jbuilder/schema.rb` is loaded.
|
|
4
|
-
JBUILDER_SCHEMA_VERSION = "2.
|
|
4
|
+
JBUILDER_SCHEMA_VERSION = "2.3.0"
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: jbuilder-schema
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.3.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Yuri Sidorov
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2023-
|
|
11
|
+
date: 2023-09-23 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: jbuilder
|
|
@@ -76,7 +76,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
76
76
|
- !ruby/object:Gem::Version
|
|
77
77
|
version: '0'
|
|
78
78
|
requirements: []
|
|
79
|
-
rubygems_version: 3.4.
|
|
79
|
+
rubygems_version: 3.4.10
|
|
80
80
|
signing_key:
|
|
81
81
|
specification_version: 4
|
|
82
82
|
summary: Generate JSON Schema from Jbuilder files
|