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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d17945478f8bed7549184c7a1cb5e621975c4aa7d72a90798344e383daf2916d
4
- data.tar.gz: c7e2976dff38044a9881028aa71ec8346e0cf8fae9c29eb548b713eed10489dd
3
+ metadata.gz: f5b6ca01afb142104d97ce2794f2d359f090526dbb3b594cf42f49b61a41f899
4
+ data.tar.gz: 7387d55a54b70f478863a3a635f060b46b745497199ca01ada8d2379e42808a0
5
5
  SHA512:
6
- metadata.gz: f092efb563b201ff660fa3ad0993d7641284198fb0c54711d25ab5bc33900bb699472fc368f90c2286b2c01f33dcb7bce8bdc39bd601a5de272b7e891ba8faf0
7
- data.tar.gz: c85ad5459c2233d4c6641747329114e78a2918117498adaf0d2061933a466c989f51a2e87aeaf58046cacd747bc5613ea8087b270935017c958420b586dc4fdc
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', '~> 1.3.0'
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', '~> 2.4.2'
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.12
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 schema(reference = nil, version: nil, **options, &block)
25
- if reference
26
- if version && version != 3
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
- self._op_schema = Schemacop::Node.create(:reference, path: reference)
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
- version ||= RailsOps.config.default_schemacop_version
35
+ self._op_schema = Schemacop::Schema3.new(:hash, **options, &block)
36
+ end
37
+ end
33
38
 
34
- if version == 3
35
- self._op_schema = Schemacop::Node.create(:object, options, &block)
36
- elsif version == 2
37
- if defined?(Schemacop::V2)
38
- self._op_schema = Schemacop::V2::Schema.new(:hash, options, &block)
39
- else
40
- self._op_schema = Schemacop::Schema.new(:hash, options, &block)
41
- end
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
@@ -61,13 +61,17 @@ class RailsOps::Operation
61
61
  )
62
62
 
63
63
  # Validate params
64
- if _op_schema
65
- @params = _op_schema.validate!(params).with_indifferent_access
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.12 ruby lib
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.12"
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 = "2020-11-24"
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, ["~> 1.3.0"])
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, ["~> 2.4.2"])
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, ["~> 1.3.0"])
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, ["~> 2.4.2"])
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.12
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: 2020-11-24 00:00:00.000000000 Z
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: []