rails_ops 1.1.12 → 1.1.17

Sign up to get free protection for your applications and to get access to all the features.
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: []