activerecord_json_validator 1.0.0 → 2.0.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 +5 -5
- data/.rubocop.yml +1 -1
- data/.travis.yml +13 -5
- data/Gemfile +2 -0
- data/LICENSE.md +1 -1
- data/README.md +13 -11
- data/Rakefile +3 -1
- data/activerecord_json_validator.gemspec +5 -5
- data/gemfiles/Gemfile.activerecord-4.2.x +1 -0
- data/gemfiles/Gemfile.activerecord-5.0.x +5 -0
- data/gemfiles/Gemfile.activerecord-6.0.x +5 -0
- data/lib/active_record/json_validator/validator.rb +5 -8
- data/lib/active_record/json_validator/version.rb +3 -1
- data/lib/activerecord_json_validator.rb +3 -1
- data/spec/json_validator_spec.rb +16 -26
- data/spec/spec_helper.rb +4 -2
- data/spec/support/macros/database/database_adapter.rb +2 -0
- data/spec/support/macros/database/mysql_adapter.rb +2 -0
- data/spec/support/macros/database/postgresql_adapter.rb +2 -0
- data/spec/support/macros/database_macros.rb +9 -1
- data/spec/support/macros/model_macros.rb +2 -0
- metadata +18 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: a23791df42cc3761bf97c7582c7ba526806b2b163708e5bf1fe8250b6236d067
|
4
|
+
data.tar.gz: 57f080ea733883b1e83e81ed28bc28d17332b8939699a3f48cfca9ef49689ffe
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 53836d631662e35b1e864379491a11fbebfde8207318dde0a2572f83d22811add057b5f35609f4bc267e17b0d16aa3672b8e057521ec2f797d9b160cceae0b9a
|
7
|
+
data.tar.gz: f8806eaa64ee2bb70ff2d44a91f53b8bc2c068b26eb38138f0fd600417263b138d0f5f61f35d0d08457583129260d11bcf8f54761ae4e5fd5996885988b08472
|
data/.rubocop.yml
CHANGED
data/.travis.yml
CHANGED
@@ -1,14 +1,25 @@
|
|
1
1
|
language: ruby
|
2
2
|
|
3
3
|
rvm:
|
4
|
-
- 2.
|
5
|
-
- 2.
|
4
|
+
- 2.4.6
|
5
|
+
- 2.6.3
|
6
6
|
|
7
7
|
gemfile:
|
8
8
|
- gemfiles/Gemfile.activerecord-4.2.x
|
9
|
+
- gemfiles/Gemfile.activerecord-5.0.x
|
10
|
+
- gemfiles/Gemfile.activerecord-6.0.x
|
11
|
+
|
12
|
+
matrix:
|
13
|
+
exclude:
|
14
|
+
- gemfile: gemfiles/Gemfile.activerecord-6.0.x
|
15
|
+
rvm: 2.4.6
|
9
16
|
|
10
17
|
sudo: false
|
11
18
|
|
19
|
+
services:
|
20
|
+
- mysql
|
21
|
+
- postgresql
|
22
|
+
|
12
23
|
env:
|
13
24
|
- DB_ADAPTER=mysql2
|
14
25
|
- DB_ADAPTER=postgresql
|
@@ -20,6 +31,3 @@ before_script:
|
|
20
31
|
script:
|
21
32
|
- 'echo "Checking code style" && bundle exec phare'
|
22
33
|
- 'echo "Running tests" && bundle exec rake spec'
|
23
|
-
|
24
|
-
addons:
|
25
|
-
postgresql: 9.3
|
data/Gemfile
CHANGED
data/LICENSE.md
CHANGED
data/README.md
CHANGED
@@ -16,17 +16,19 @@
|
|
16
16
|
Add this line to your application's Gemfile:
|
17
17
|
|
18
18
|
```ruby
|
19
|
-
gem 'activerecord_json_validator'
|
19
|
+
gem 'activerecord_json_validator', '~> 2.0.0'
|
20
20
|
```
|
21
21
|
|
22
22
|
## Usage
|
23
23
|
|
24
24
|
### JSON Schema
|
25
25
|
|
26
|
+
Schemas should be a JSON file
|
27
|
+
|
26
28
|
```json
|
27
29
|
{
|
28
30
|
"type": "object",
|
29
|
-
"$schema": "http://json-schema.org/draft-04/schema",
|
31
|
+
"$schema": "http://json-schema.org/draft-04/schema#",
|
30
32
|
"properties": {
|
31
33
|
"city": { "type": "string" },
|
32
34
|
"country": { "type": "string" }
|
@@ -45,7 +47,7 @@ end
|
|
45
47
|
|
46
48
|
class User < ActiveRecord::Base
|
47
49
|
# Constants
|
48
|
-
PROFILE_JSON_SCHEMA = Rails.root.join('config', 'schemas', 'profile.
|
50
|
+
PROFILE_JSON_SCHEMA = Pathname.new(Rails.root.join('config', 'schemas', 'profile.json'))
|
49
51
|
|
50
52
|
# Validations
|
51
53
|
validates :name, presence: true
|
@@ -65,16 +67,16 @@ user.profile_invalid_json # => '{invalid JSON":}'
|
|
65
67
|
|
66
68
|
#### Options
|
67
69
|
|
68
|
-
| Option | Description
|
69
|
-
|
70
|
-
| `:schema` | The JSON schema to validate the data against (see **Schema** section)
|
71
|
-
| `:message` | The ActiveRecord message added to the record errors (see **Message** section)
|
70
|
+
| Option | Description |
|
71
|
+
| ---------- | ------------------------------------------------------------------------------------------------------------------------------ |
|
72
|
+
| `:schema` | The JSON schema to validate the data against (see **Schema** section) |
|
73
|
+
| `:message` | The ActiveRecord message added to the record errors (see **Message** section) |
|
74
|
+
| `:options` | A `Hash` of [`json_schemer`](https://github.com/davishmcclurg/json_schemer#options)-supported options to pass to the validator |
|
72
75
|
|
73
76
|
##### Schema
|
74
77
|
|
75
|
-
`ActiveRecord::JSONValidator` uses the
|
76
|
-
data against a JSON schema.
|
77
|
-
`JSON::Validator.validate` would take as the `schema` argument.
|
78
|
+
`ActiveRecord::JSONValidator` uses the [json_schemer](https://github.com/davishmcclurg/json_schemer) gem to validate the JSON
|
79
|
+
data against a JSON schema.
|
78
80
|
|
79
81
|
Additionally, you can use a `Symbol` or a `Proc`. Both will be executed in the
|
80
82
|
context of the validated record (`Symbol` will be sent as a method and the
|
@@ -121,7 +123,7 @@ user.errors.full_messages
|
|
121
123
|
|
122
124
|
## License
|
123
125
|
|
124
|
-
`ActiveRecord::JSONValidator` is © 2013-
|
126
|
+
`ActiveRecord::JSONValidator` is © 2013-2016 [Mirego](http://www.mirego.com) and may be freely distributed under the [New BSD license](http://opensource.org/licenses/BSD-3-Clause). See the [`LICENSE.md`](https://github.com/mirego/activerecord_json_validator/blob/master/LICENSE.md) file.
|
125
127
|
|
126
128
|
The tree logo is based on [this lovely icon](http://thenounproject.com/term/tree/51004/) by [Sara Quintana](http://thenounproject.com/sara.quintana.75), from The Noun Project. Used under a [Creative Commons BY 3.0](http://creativecommons.org/licenses/by/3.0/) license.
|
127
129
|
|
data/Rakefile
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'bundler'
|
2
4
|
require 'rake'
|
3
5
|
require 'bundler/gem_tasks'
|
@@ -12,7 +14,7 @@ end
|
|
12
14
|
|
13
15
|
desc 'Start an IRB session with the gem'
|
14
16
|
task :console do
|
15
|
-
$LOAD_PATH.unshift File.expand_path(
|
17
|
+
$LOAD_PATH.unshift File.expand_path(__dir__)
|
16
18
|
require 'activerecord_json_validator'
|
17
19
|
require 'irb'
|
18
20
|
|
@@ -18,15 +18,15 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ['lib']
|
20
20
|
|
21
|
-
spec.add_development_dependency 'bundler', '~> 1.
|
21
|
+
spec.add_development_dependency 'bundler', '~> 1.12'
|
22
22
|
spec.add_development_dependency 'rake'
|
23
|
-
spec.add_development_dependency 'rspec', '~> 3.
|
23
|
+
spec.add_development_dependency 'rspec', '~> 3.5'
|
24
24
|
spec.add_development_dependency 'pg'
|
25
25
|
spec.add_development_dependency 'mysql2'
|
26
|
-
spec.add_development_dependency 'activesupport', '>= 4.
|
26
|
+
spec.add_development_dependency 'activesupport', '>= 4.2.0', '< 7'
|
27
27
|
spec.add_development_dependency 'phare'
|
28
28
|
spec.add_development_dependency 'rubocop', '~> 0.28'
|
29
29
|
|
30
|
-
spec.add_dependency '
|
31
|
-
spec.add_dependency 'activerecord', '>= 4.2.0', '<
|
30
|
+
spec.add_dependency 'json_schemer', '~> 0.2.18'
|
31
|
+
spec.add_dependency 'activerecord', '>= 4.2.0', '< 7'
|
32
32
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
class JsonValidator < ActiveModel::EachValidator
|
2
4
|
def initialize(options)
|
3
5
|
options.reverse_merge!(message: :invalid_json)
|
@@ -12,8 +14,8 @@ class JsonValidator < ActiveModel::EachValidator
|
|
12
14
|
|
13
15
|
# Validate the JSON value with a JSON schema path or String
|
14
16
|
def validate_each(record, attribute, value)
|
15
|
-
# Validate value with JSON
|
16
|
-
errors =
|
17
|
+
# Validate value with JSON Schemer
|
18
|
+
errors = JSONSchemer.schema(schema(record), **options.fetch(:options)).validate(value).to_a
|
17
19
|
|
18
20
|
# Everything is good if we don’t have any errors and we got valid JSON value
|
19
21
|
return if errors.empty? && record.send(:"#{attribute}_invalid_json").blank?
|
@@ -47,7 +49,7 @@ protected
|
|
47
49
|
end
|
48
50
|
end
|
49
51
|
|
50
|
-
# Return a valid schema
|
52
|
+
# Return a valid schema, recursively calling
|
51
53
|
# itself until it gets a non-Proc/non-Symbol value.
|
52
54
|
def schema(record, schema = nil)
|
53
55
|
schema ||= options.fetch(:schema)
|
@@ -59,11 +61,6 @@ protected
|
|
59
61
|
end
|
60
62
|
end
|
61
63
|
|
62
|
-
def validatable_value(value)
|
63
|
-
return value if value.is_a?(String)
|
64
|
-
::ActiveSupport::JSON.encode(value)
|
65
|
-
end
|
66
|
-
|
67
64
|
def message(errors)
|
68
65
|
message = options.fetch(:message)
|
69
66
|
|
data/spec/json_validator_spec.rb
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# rubocop:disable Metrics/BlockLength
|
1
4
|
require 'spec_helper'
|
2
5
|
|
3
6
|
describe JsonValidator do
|
@@ -39,7 +42,7 @@ describe JsonValidator do
|
|
39
42
|
|
40
43
|
describe :validate_each do
|
41
44
|
let(:validator) { JsonValidator.new(options) }
|
42
|
-
let(:options) { { attributes: [attribute], options: {
|
45
|
+
let(:options) { { attributes: [attribute], options: { format: true } } }
|
43
46
|
let(:validate_each!) { validator.validate_each(record, attribute, value) }
|
44
47
|
|
45
48
|
# Doubles
|
@@ -48,16 +51,18 @@ describe JsonValidator do
|
|
48
51
|
let(:record_errors) { double(:errors) }
|
49
52
|
let(:value) { double(:value) }
|
50
53
|
let(:schema) { double(:schema) }
|
51
|
-
let(:
|
54
|
+
let(:schema_validator) { double(:schema_validator) }
|
55
|
+
let(:raw_errors) { double(:raw_errors) }
|
52
56
|
let(:validator_errors) { double(:validator_errors) }
|
53
57
|
|
54
58
|
before do
|
55
59
|
expect(validator).to receive(:schema).with(record).and_return(schema)
|
56
|
-
expect(
|
57
|
-
expect(
|
60
|
+
expect(JSONSchemer).to receive(:schema).with(schema, options[:options]).and_return(schema_validator)
|
61
|
+
expect(schema_validator).to receive(:validate).with(value).and_return(raw_errors)
|
62
|
+
expect(raw_errors).to receive(:to_a).and_return(validator_errors)
|
58
63
|
end
|
59
64
|
|
60
|
-
context 'with JSON
|
65
|
+
context 'with JSON Schemer errors' do
|
61
66
|
before do
|
62
67
|
expect(validator_errors).to receive(:empty?).and_return(false)
|
63
68
|
expect(record).not_to receive(:"#{attribute}_invalid_json")
|
@@ -67,7 +72,7 @@ describe JsonValidator do
|
|
67
72
|
specify { validate_each! }
|
68
73
|
end
|
69
74
|
|
70
|
-
context 'without JSON
|
75
|
+
context 'without JSON Schemer errors but with invalid JSON data' do
|
71
76
|
before do
|
72
77
|
expect(validator_errors).to receive(:empty?).and_return(true)
|
73
78
|
expect(record).to receive(:"#{attribute}_invalid_json").and_return('foo"{]')
|
@@ -77,7 +82,7 @@ describe JsonValidator do
|
|
77
82
|
specify { validate_each! }
|
78
83
|
end
|
79
84
|
|
80
|
-
context 'without JSON
|
85
|
+
context 'without JSON Schemer errors and valid JSON data' do
|
81
86
|
before do
|
82
87
|
expect(validator_errors).to receive(:empty?).and_return(true)
|
83
88
|
expect(record).to receive(:"#{attribute}_invalid_json").and_return(nil)
|
@@ -93,7 +98,7 @@ describe JsonValidator do
|
|
93
98
|
|
94
99
|
before do
|
95
100
|
expect(validator_errors).to receive(:empty?).and_return(false)
|
96
|
-
expect(validator_errors).to receive(:to_a).and_return(%i
|
101
|
+
expect(validator_errors).to receive(:to_a).and_return(%i[first_error second_error])
|
97
102
|
expect(record).not_to receive(:"#{attribute}_invalid_json")
|
98
103
|
expect(record_errors).to receive(:add).with(attribute, :first_error, value: value)
|
99
104
|
expect(record_errors).to receive(:add).with(attribute, :second_error, value: value)
|
@@ -152,27 +157,11 @@ describe JsonValidator do
|
|
152
157
|
end
|
153
158
|
end
|
154
159
|
|
155
|
-
describe :validatable_value do
|
156
|
-
let(:validator) { JsonValidator.new(options) }
|
157
|
-
let(:options) { { attributes: [:foo] } }
|
158
|
-
let(:validatable_value) { validator.send(:validatable_value, value) }
|
159
|
-
|
160
|
-
context 'with non-String value' do
|
161
|
-
let(:value) { { foo: 'bar' } }
|
162
|
-
it { expect(validatable_value).to eql('{"foo":"bar"}') }
|
163
|
-
end
|
164
|
-
|
165
|
-
context 'with String value' do
|
166
|
-
let(:value) { "{\"foo\":\"bar\"}" }
|
167
|
-
it { expect(validatable_value).to eql(value) }
|
168
|
-
end
|
169
|
-
end
|
170
|
-
|
171
160
|
describe :message do
|
172
161
|
let(:validator) { JsonValidator.new(options) }
|
173
162
|
let(:options) { { attributes: [:foo], message: message_option } }
|
174
163
|
let(:message) { validator.send(:message, errors) }
|
175
|
-
let(:errors) { %i
|
164
|
+
let(:errors) { %i[first_error second_error] }
|
176
165
|
|
177
166
|
context 'with Symbol message' do
|
178
167
|
let(:message_option) { :invalid_json }
|
@@ -181,7 +170,8 @@ describe JsonValidator do
|
|
181
170
|
|
182
171
|
context 'with String value' do
|
183
172
|
let(:message_option) { ->(errors) { errors } }
|
184
|
-
it { expect(message).to eql(%i
|
173
|
+
it { expect(message).to eql(%i[first_error second_error]) }
|
185
174
|
end
|
186
175
|
end
|
187
176
|
end
|
177
|
+
# rubocop:enable Metrics/BlockLength
|
data/spec/spec_helper.rb
CHANGED
@@ -1,4 +1,6 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
$LOAD_PATH.unshift File.expand_path('lib', __dir__)
|
2
4
|
|
3
5
|
require 'active_support/all'
|
4
6
|
require 'rspec'
|
@@ -8,7 +10,7 @@ require 'pg'
|
|
8
10
|
require 'activerecord_json_validator'
|
9
11
|
|
10
12
|
# Require our macros and extensions
|
11
|
-
Dir[File.expand_path('
|
13
|
+
Dir[File.expand_path('../spec/support/macros/**/*.rb', __dir__)].map(&method(:require))
|
12
14
|
|
13
15
|
RSpec.configure do |config|
|
14
16
|
# Include our macros
|
@@ -1,8 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module DatabaseMacros
|
2
4
|
# Run migrations in the test database
|
3
5
|
def run_migration(&block)
|
6
|
+
migration_class = if ActiveRecord::Migration.respond_to?(:[])
|
7
|
+
ActiveRecord::Migration[4.2]
|
8
|
+
else
|
9
|
+
ActiveRecord::Migration
|
10
|
+
end
|
11
|
+
|
4
12
|
# Create a new migration class
|
5
|
-
klass = Class.new(
|
13
|
+
klass = Class.new(migration_class)
|
6
14
|
|
7
15
|
# Create a new `up` that executes the argument
|
8
16
|
klass.send(:define_method, :up) { instance_exec(&block) }
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activerecord_json_validator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rémi Prévost
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-07-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '1.
|
19
|
+
version: '1.12'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '1.
|
26
|
+
version: '1.12'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '3.
|
47
|
+
version: '3.5'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '3.
|
54
|
+
version: '3.5'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: pg
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -86,20 +86,20 @@ dependencies:
|
|
86
86
|
requirements:
|
87
87
|
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: 4.
|
89
|
+
version: 4.2.0
|
90
90
|
- - "<"
|
91
91
|
- !ruby/object:Gem::Version
|
92
|
-
version: '
|
92
|
+
version: '7'
|
93
93
|
type: :development
|
94
94
|
prerelease: false
|
95
95
|
version_requirements: !ruby/object:Gem::Requirement
|
96
96
|
requirements:
|
97
97
|
- - ">="
|
98
98
|
- !ruby/object:Gem::Version
|
99
|
-
version: 4.
|
99
|
+
version: 4.2.0
|
100
100
|
- - "<"
|
101
101
|
- !ruby/object:Gem::Version
|
102
|
-
version: '
|
102
|
+
version: '7'
|
103
103
|
- !ruby/object:Gem::Dependency
|
104
104
|
name: phare
|
105
105
|
requirement: !ruby/object:Gem::Requirement
|
@@ -129,19 +129,19 @@ dependencies:
|
|
129
129
|
- !ruby/object:Gem::Version
|
130
130
|
version: '0.28'
|
131
131
|
- !ruby/object:Gem::Dependency
|
132
|
-
name:
|
132
|
+
name: json_schemer
|
133
133
|
requirement: !ruby/object:Gem::Requirement
|
134
134
|
requirements:
|
135
135
|
- - "~>"
|
136
136
|
- !ruby/object:Gem::Version
|
137
|
-
version:
|
137
|
+
version: 0.2.18
|
138
138
|
type: :runtime
|
139
139
|
prerelease: false
|
140
140
|
version_requirements: !ruby/object:Gem::Requirement
|
141
141
|
requirements:
|
142
142
|
- - "~>"
|
143
143
|
- !ruby/object:Gem::Version
|
144
|
-
version:
|
144
|
+
version: 0.2.18
|
145
145
|
- !ruby/object:Gem::Dependency
|
146
146
|
name: activerecord
|
147
147
|
requirement: !ruby/object:Gem::Requirement
|
@@ -151,7 +151,7 @@ dependencies:
|
|
151
151
|
version: 4.2.0
|
152
152
|
- - "<"
|
153
153
|
- !ruby/object:Gem::Version
|
154
|
-
version: '
|
154
|
+
version: '7'
|
155
155
|
type: :runtime
|
156
156
|
prerelease: false
|
157
157
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -161,7 +161,7 @@ dependencies:
|
|
161
161
|
version: 4.2.0
|
162
162
|
- - "<"
|
163
163
|
- !ruby/object:Gem::Version
|
164
|
-
version: '
|
164
|
+
version: '7'
|
165
165
|
description: ActiveRecord::JSONValidator makes it easy to validate JSON attributes
|
166
166
|
with a JSON schema.
|
167
167
|
email:
|
@@ -180,6 +180,8 @@ files:
|
|
180
180
|
- Rakefile
|
181
181
|
- activerecord_json_validator.gemspec
|
182
182
|
- gemfiles/Gemfile.activerecord-4.2.x
|
183
|
+
- gemfiles/Gemfile.activerecord-5.0.x
|
184
|
+
- gemfiles/Gemfile.activerecord-6.0.x
|
183
185
|
- lib/active_record/json_validator/validator.rb
|
184
186
|
- lib/active_record/json_validator/version.rb
|
185
187
|
- lib/activerecord_json_validator.rb
|
@@ -209,8 +211,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
209
211
|
- !ruby/object:Gem::Version
|
210
212
|
version: '0'
|
211
213
|
requirements: []
|
212
|
-
|
213
|
-
rubygems_version: 2.4.5
|
214
|
+
rubygems_version: 3.1.6
|
214
215
|
signing_key:
|
215
216
|
specification_version: 4
|
216
217
|
summary: ActiveRecord::JSONValidator makes it easy to validate JSON attributes with
|