rails_ops 1.1.12 → 1.1.17
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/CHANGELOG.md +22 -0
- data/Rakefile +2 -2
- data/VERSION +1 -1
- data/lib/rails_ops/mixins/model/nesting.rb +6 -0
- data/lib/rails_ops/mixins/schema_validation.rb +27 -18
- data/lib/rails_ops/operation.rb +6 -2
- data/rails_ops.gemspec +7 -7
- metadata +12 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f5b6ca01afb142104d97ce2794f2d359f090526dbb3b594cf42f49b61a41f899
|
4
|
+
data.tar.gz: 7387d55a54b70f478863a3a635f060b46b745497199ca01ada8d2379e42808a0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 60f55ddb1f8094f179c1a8faa5d0fa322aeeb66eafe72b22fb593c0c990cfbeb0fbac2ce07822b0ea3d8c11e70062fa08fc4b2c02b5fef7db01deefd026f29da
|
7
|
+
data.tar.gz: 299b58451e29907d9cdc14571a5e27800b3a749dcd79d0558aceea31fa20b061560a6c161fd61e588238bfef7348e13afe3f6dec0fe36ad1f333c6ab357ee70f
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,27 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## 1.1.17 (2021-02-10)
|
4
|
+
|
5
|
+
* Add operation class method `skip_schema_validation`
|
6
|
+
|
7
|
+
* Add operation instance method `validate_op_schema!`
|
8
|
+
|
9
|
+
## 1.1.16 (2021-01-26)
|
10
|
+
|
11
|
+
* Update dependency to support `schemacop` version 3
|
12
|
+
|
13
|
+
## 1.1.15 (2021-01-06)
|
14
|
+
|
15
|
+
* Allow `active_type >= 1.3.0`
|
16
|
+
|
17
|
+
## 1.1.14 (2020-12-22)
|
18
|
+
|
19
|
+
* Fix validation of unchanged nested models.
|
20
|
+
|
21
|
+
## 1.1.13 (2020-11-23)
|
22
|
+
|
23
|
+
* Update support for upcoming Schemacop 3
|
24
|
+
|
3
25
|
## 1.1.12 (2020-11-24)
|
4
26
|
|
5
27
|
* Add support for upcoming Schemacop 3. It is still backwards compatible and
|
data/Rakefile
CHANGED
@@ -19,11 +19,11 @@ task :gemspec do
|
|
19
19
|
spec.add_development_dependency 'rake'
|
20
20
|
spec.add_development_dependency 'sqlite3'
|
21
21
|
spec.add_development_dependency 'rubocop', '0.47.1'
|
22
|
-
spec.add_dependency 'active_type', '
|
22
|
+
spec.add_dependency 'active_type', '>= 1.3.0'
|
23
23
|
spec.add_dependency 'minitest'
|
24
24
|
spec.add_dependency 'rails'
|
25
25
|
spec.add_dependency 'request_store'
|
26
|
-
spec.add_dependency 'schemacop', '
|
26
|
+
spec.add_dependency 'schemacop', '>= 2.4.2', '<= 3.1'
|
27
27
|
end
|
28
28
|
|
29
29
|
File.open('rails_ops.gemspec', 'w') { |f| f.write(gemspec.to_ruby.strip) }
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.1.
|
1
|
+
1.1.17
|
@@ -167,6 +167,12 @@ module RailsOps::Mixins::Model::Nesting
|
|
167
167
|
# line also makes sure a model is built.
|
168
168
|
model.validate!
|
169
169
|
|
170
|
+
# Validate all unchanged nested models as the above call to "validate!" only validates
|
171
|
+
# associations that are changed.
|
172
|
+
@nested_model_ops.keys.each do |attribute|
|
173
|
+
model.send(attribute).validate!
|
174
|
+
end
|
175
|
+
|
170
176
|
# Make sure nested model operations are build
|
171
177
|
fail 'Nested model operations are not built yet. Make sure the model is built.' unless @nested_model_ops
|
172
178
|
|
@@ -7,6 +7,9 @@ module RailsOps::Mixins::SchemaValidation
|
|
7
7
|
included do
|
8
8
|
class_attribute :_op_schema
|
9
9
|
self._op_schema = nil
|
10
|
+
|
11
|
+
class_attribute :_skip_op_schema_validation
|
12
|
+
self._skip_op_schema_validation = false
|
10
13
|
end
|
11
14
|
|
12
15
|
module ClassMethods
|
@@ -21,28 +24,34 @@ module RailsOps::Mixins::SchemaValidation
|
|
21
24
|
#
|
22
25
|
# @param *args [Array] Parameters to pass at schema initialization
|
23
26
|
# @yield Block to pass at schema initialization
|
24
|
-
def
|
25
|
-
|
26
|
-
|
27
|
-
fail 'References are only supported with schemacop schema version 3.'
|
28
|
-
end
|
27
|
+
def schema2(*args, &block)
|
28
|
+
self._op_schema = Schemacop::Schema.new(*args, &block)
|
29
|
+
end
|
29
30
|
|
30
|
-
|
31
|
+
def schema3(reference = nil, **options, &block)
|
32
|
+
if reference
|
33
|
+
self._op_schema = Schemacop::Schema3.new(:reference, options.merge(path: reference))
|
31
34
|
else
|
32
|
-
|
35
|
+
self._op_schema = Schemacop::Schema3.new(:hash, **options, &block)
|
36
|
+
end
|
37
|
+
end
|
33
38
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
elsif
|
43
|
-
fail "Unsupported schemacop schema version #{version}. Schemacop supports 2 and 3."
|
44
|
-
end
|
39
|
+
def schema(*args, &block)
|
40
|
+
case RailsOps.config.default_schemacop_version
|
41
|
+
when 2
|
42
|
+
schema2(*args, &block)
|
43
|
+
when 3
|
44
|
+
schema3(*args, &block)
|
45
|
+
else
|
46
|
+
fail 'Schemacop schema versions supported are 2 and 3.'
|
45
47
|
end
|
46
48
|
end
|
49
|
+
|
50
|
+
# Skips the schema validation, even if a schema is defined. This allows you
|
51
|
+
# to manually call `validate_op_schema!`, i.e. inside of your `perform`
|
52
|
+
# method.
|
53
|
+
def skip_schema_validation(skip = true)
|
54
|
+
self._skip_op_schema_validation = skip
|
55
|
+
end
|
47
56
|
end
|
48
57
|
end
|
data/lib/rails_ops/operation.rb
CHANGED
@@ -61,13 +61,17 @@ class RailsOps::Operation
|
|
61
61
|
)
|
62
62
|
|
63
63
|
# Validate params
|
64
|
-
if _op_schema
|
65
|
-
|
64
|
+
if _op_schema && !_skip_op_schema_validation
|
65
|
+
validate_op_schema!
|
66
66
|
end
|
67
67
|
|
68
68
|
run_policies :on_init
|
69
69
|
end
|
70
70
|
|
71
|
+
def validate_op_schema!
|
72
|
+
@params = _op_schema.validate!(params).with_indifferent_access
|
73
|
+
end
|
74
|
+
|
71
75
|
# Returns an array of exception classes that are considered as validation
|
72
76
|
# errors.
|
73
77
|
def validation_errors
|
data/rails_ops.gemspec
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
# stub: rails_ops 1.1.
|
2
|
+
# stub: rails_ops 1.1.17 ruby lib
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = "rails_ops".freeze
|
6
|
-
s.version = "1.1.
|
6
|
+
s.version = "1.1.17"
|
7
7
|
|
8
8
|
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
9
9
|
s.require_paths = ["lib".freeze]
|
10
10
|
s.authors = ["Sitrox".freeze]
|
11
|
-
s.date = "
|
11
|
+
s.date = "2021-02-10"
|
12
12
|
s.files = [".gitignore".freeze, ".releaser_config".freeze, ".rubocop.yml".freeze, ".travis.yml".freeze, "CHANGELOG.md".freeze, "Gemfile".freeze, "LICENSE.txt".freeze, "README.md".freeze, "Rakefile".freeze, "VERSION".freeze, "lib/rails_ops.rb".freeze, "lib/rails_ops/authorization_backend/abstract.rb".freeze, "lib/rails_ops/authorization_backend/can_can_can.rb".freeze, "lib/rails_ops/configuration.rb".freeze, "lib/rails_ops/context.rb".freeze, "lib/rails_ops/controller_mixin.rb".freeze, "lib/rails_ops/exceptions.rb".freeze, "lib/rails_ops/hooked_job.rb".freeze, "lib/rails_ops/hookup.rb".freeze, "lib/rails_ops/hookup/dsl.rb".freeze, "lib/rails_ops/hookup/dsl_validator.rb".freeze, "lib/rails_ops/hookup/hook.rb".freeze, "lib/rails_ops/log_subscriber.rb".freeze, "lib/rails_ops/mixins.rb".freeze, "lib/rails_ops/mixins/authorization.rb".freeze, "lib/rails_ops/mixins/log_settings.rb".freeze, "lib/rails_ops/mixins/model.rb".freeze, "lib/rails_ops/mixins/model/authorization.rb".freeze, "lib/rails_ops/mixins/model/nesting.rb".freeze, "lib/rails_ops/mixins/param_authorization.rb".freeze, "lib/rails_ops/mixins/policies.rb".freeze, "lib/rails_ops/mixins/require_context.rb".freeze, "lib/rails_ops/mixins/routes.rb".freeze, "lib/rails_ops/mixins/schema_validation.rb".freeze, "lib/rails_ops/mixins/sub_ops.rb".freeze, "lib/rails_ops/model_casting.rb".freeze, "lib/rails_ops/model_mixins.rb".freeze, "lib/rails_ops/model_mixins/ar_extension.rb".freeze, "lib/rails_ops/model_mixins/parent_op.rb".freeze, "lib/rails_ops/model_mixins/virtual_attributes.rb".freeze, "lib/rails_ops/model_mixins/virtual_attributes/virtual_column_wrapper.rb".freeze, "lib/rails_ops/model_mixins/virtual_has_one.rb".freeze, "lib/rails_ops/model_mixins/virtual_model_name.rb".freeze, "lib/rails_ops/operation.rb".freeze, "lib/rails_ops/operation/model.rb".freeze, "lib/rails_ops/operation/model/create.rb".freeze, "lib/rails_ops/operation/model/destroy.rb".freeze, "lib/rails_ops/operation/model/load.rb".freeze, "lib/rails_ops/operation/model/update.rb".freeze, "lib/rails_ops/patches/active_type_patch.rb".freeze, "lib/rails_ops/profiler.rb".freeze, "lib/rails_ops/profiler/node.rb".freeze, "lib/rails_ops/railtie.rb".freeze, "lib/rails_ops/scoped_env.rb".freeze, "lib/rails_ops/virtual_model.rb".freeze, "rails_ops.gemspec".freeze, "test/db/models.rb".freeze, "test/db/schema.rb".freeze, "test/dummy/Rakefile".freeze, "test/dummy/app/assets/config/manifest.js".freeze, "test/dummy/app/assets/images/.keep".freeze, "test/dummy/app/assets/javascripts/application.js".freeze, "test/dummy/app/assets/javascripts/cable.js".freeze, "test/dummy/app/assets/javascripts/channels/.keep".freeze, "test/dummy/app/assets/stylesheets/application.css".freeze, "test/dummy/app/channels/application_cable/channel.rb".freeze, "test/dummy/app/channels/application_cable/connection.rb".freeze, "test/dummy/app/controllers/application_controller.rb".freeze, "test/dummy/app/controllers/concerns/.keep".freeze, "test/dummy/app/helpers/application_helper.rb".freeze, "test/dummy/app/jobs/application_job.rb".freeze, "test/dummy/app/mailers/application_mailer.rb".freeze, "test/dummy/app/models/application_record.rb".freeze, "test/dummy/app/models/concerns/.keep".freeze, "test/dummy/app/models/group.rb".freeze, "test/dummy/app/views/layouts/application.html.erb".freeze, "test/dummy/app/views/layouts/mailer.html.erb".freeze, "test/dummy/app/views/layouts/mailer.text.erb".freeze, "test/dummy/bin/bundle".freeze, "test/dummy/bin/rails".freeze, "test/dummy/bin/rake".freeze, "test/dummy/bin/setup".freeze, "test/dummy/bin/update".freeze, "test/dummy/bin/yarn".freeze, "test/dummy/config.ru".freeze, "test/dummy/config/application.rb".freeze, "test/dummy/config/boot.rb".freeze, "test/dummy/config/cable.yml".freeze, "test/dummy/config/database.yml".freeze, "test/dummy/config/environment.rb".freeze, "test/dummy/config/environments/development.rb".freeze, "test/dummy/config/environments/production.rb".freeze, "test/dummy/config/environments/test.rb".freeze, "test/dummy/config/initializers/application_controller_renderer.rb".freeze, "test/dummy/config/initializers/assets.rb".freeze, "test/dummy/config/initializers/backtrace_silencers.rb".freeze, "test/dummy/config/initializers/cookies_serializer.rb".freeze, "test/dummy/config/initializers/filter_parameter_logging.rb".freeze, "test/dummy/config/initializers/inflections.rb".freeze, "test/dummy/config/initializers/mime_types.rb".freeze, "test/dummy/config/initializers/rails_ops.rb".freeze, "test/dummy/config/initializers/wrap_parameters.rb".freeze, "test/dummy/config/locales/en.yml".freeze, "test/dummy/config/puma.rb".freeze, "test/dummy/config/routes.rb".freeze, "test/dummy/config/secrets.yml".freeze, "test/dummy/config/spring.rb".freeze, "test/dummy/db/schema.rb".freeze, "test/dummy/lib/assets/.keep".freeze, "test/dummy/log/.keep".freeze, "test/dummy/package.json".freeze, "test/dummy/public/404.html".freeze, "test/dummy/public/422.html".freeze, "test/dummy/public/500.html".freeze, "test/dummy/public/apple-touch-icon-precomposed.png".freeze, "test/dummy/public/apple-touch-icon.png".freeze, "test/dummy/public/favicon.ico".freeze, "test/dummy/tmp/.keep".freeze, "test/test_helper.rb".freeze, "test/unit/rails_ops/mixins/model/nesting.rb".freeze, "test/unit/rails_ops/mixins/policies_test.rb".freeze, "test/unit/rails_ops/operation/model/create_test.rb".freeze, "test/unit/rails_ops/operation/model/load_test.rb".freeze, "test/unit/rails_ops/operation/model/update_test.rb".freeze, "test/unit/rails_ops/operation/model_test.rb".freeze, "test/unit/rails_ops/operation_test.rb".freeze]
|
13
13
|
s.rubygems_version = "3.1.4".freeze
|
14
14
|
s.summary = "An operations service layer for rails projects.".freeze
|
@@ -23,20 +23,20 @@ Gem::Specification.new do |s|
|
|
23
23
|
s.add_development_dependency(%q<rake>.freeze, [">= 0"])
|
24
24
|
s.add_development_dependency(%q<sqlite3>.freeze, [">= 0"])
|
25
25
|
s.add_development_dependency(%q<rubocop>.freeze, ["= 0.47.1"])
|
26
|
-
s.add_runtime_dependency(%q<active_type>.freeze, ["
|
26
|
+
s.add_runtime_dependency(%q<active_type>.freeze, [">= 1.3.0"])
|
27
27
|
s.add_runtime_dependency(%q<minitest>.freeze, [">= 0"])
|
28
28
|
s.add_runtime_dependency(%q<rails>.freeze, [">= 0"])
|
29
29
|
s.add_runtime_dependency(%q<request_store>.freeze, [">= 0"])
|
30
|
-
s.add_runtime_dependency(%q<schemacop>.freeze, ["
|
30
|
+
s.add_runtime_dependency(%q<schemacop>.freeze, [">= 2.4.2", "<= 3.1"])
|
31
31
|
else
|
32
32
|
s.add_dependency(%q<bundler>.freeze, [">= 0"])
|
33
33
|
s.add_dependency(%q<rake>.freeze, [">= 0"])
|
34
34
|
s.add_dependency(%q<sqlite3>.freeze, [">= 0"])
|
35
35
|
s.add_dependency(%q<rubocop>.freeze, ["= 0.47.1"])
|
36
|
-
s.add_dependency(%q<active_type>.freeze, ["
|
36
|
+
s.add_dependency(%q<active_type>.freeze, [">= 1.3.0"])
|
37
37
|
s.add_dependency(%q<minitest>.freeze, [">= 0"])
|
38
38
|
s.add_dependency(%q<rails>.freeze, [">= 0"])
|
39
39
|
s.add_dependency(%q<request_store>.freeze, [">= 0"])
|
40
|
-
s.add_dependency(%q<schemacop>.freeze, ["
|
40
|
+
s.add_dependency(%q<schemacop>.freeze, [">= 2.4.2", "<= 3.1"])
|
41
41
|
end
|
42
42
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails_ops
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.17
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sitrox
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-02-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -70,14 +70,14 @@ dependencies:
|
|
70
70
|
name: active_type
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - "
|
73
|
+
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: 1.3.0
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - "
|
80
|
+
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: 1.3.0
|
83
83
|
- !ruby/object:Gem::Dependency
|
@@ -126,16 +126,22 @@ dependencies:
|
|
126
126
|
name: schemacop
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
|
-
- - "
|
129
|
+
- - ">="
|
130
130
|
- !ruby/object:Gem::Version
|
131
131
|
version: 2.4.2
|
132
|
+
- - "<="
|
133
|
+
- !ruby/object:Gem::Version
|
134
|
+
version: '3.1'
|
132
135
|
type: :runtime
|
133
136
|
prerelease: false
|
134
137
|
version_requirements: !ruby/object:Gem::Requirement
|
135
138
|
requirements:
|
136
|
-
- - "
|
139
|
+
- - ">="
|
137
140
|
- !ruby/object:Gem::Version
|
138
141
|
version: 2.4.2
|
142
|
+
- - "<="
|
143
|
+
- !ruby/object:Gem::Version
|
144
|
+
version: '3.1'
|
139
145
|
description:
|
140
146
|
email:
|
141
147
|
executables: []
|