rails_ops 1.0.21 → 1.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7115f07dab1b5c3f733ed37c4b02a14a83786f27af88126b19a460fd1d380313
4
- data.tar.gz: 35887a9ff2712aaaacffd2a837c3210ed4371b6805f561beb0b6327b7b0ab606
3
+ metadata.gz: cdab9d5d1726697193bc8d5632e7ade4c57a49c27416018e410b28a8d1c3b783
4
+ data.tar.gz: 9259adafa233ebed44044d4cd4ab5078887afda51998e3eb7eff636c0f0daef7
5
5
  SHA512:
6
- metadata.gz: 356cb5cac83f4ebf50da1e25481efd4150b8c987c9a4bce5fee85b2429f24c3a933909e28a99006dc6b18b0428bc09f8bda9864e38ba29a79243a33cf0569bdd
7
- data.tar.gz: edac8ab31a2083102f21f66e95b2599d9e5b64a6f9d2b0320d1baa07041f2a273f1235ad9fd8b132528fe000f5c4d1cc9598db9ba42cd5d80c5f1f773a257a35
6
+ metadata.gz: c55be3207fd1de748ac2085254b59d2265f60c412bb1d53b613b442aa513c6f5fdf714c90b3558b344483518cb9b749544927297b0f1f986bfbff431085d8ecc
7
+ data.tar.gz: a1b915c512f18e2c439339673b57c7bbb695db578826de6d22434c06d67687d2c45a8a11fc7a83a90d53278dd0658e4cd271217bdcd2f17fedab0a78d2ce63ae
data/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # Change log
2
2
 
3
+ ## 1.1.0 (2020-02-25)
4
+
5
+ * **Breaking changes**:
6
+
7
+ * Schema validations defined with `schema` are now always run **on operation
8
+ instantiation** and not, as before, at time of `before_perform`.
9
+
10
+ * The argument `policy_chain` for the static operation method `schema` is now
11
+ removed.
12
+
13
+ * Schema validation now overrides the `params` hash with the return value from
14
+ Schemacop. This means that Schemacop defaults and casts now can be used for
15
+ operation params (with both `params` and `osparams` methods).
16
+
17
+ * RailsOps now requires `schemacop ~> 2.4.2`.
18
+
3
19
  ## 1.0.21 (2020-02-13)
4
20
 
5
21
  * Exclude param named `format` from `op_params`.
data/Rakefile CHANGED
@@ -23,7 +23,7 @@ task :gemspec do
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.0'
26
+ spec.add_dependency 'schemacop', '~> 2.4.2'
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.0.21
1
+ 1.1.0
@@ -4,22 +4,25 @@
4
4
  module RailsOps::Mixins::SchemaValidation
5
5
  extend ActiveSupport::Concern
6
6
 
7
+ included do
8
+ class_attribute :_op_schema
9
+ self._op_schema = nil
10
+ end
11
+
7
12
  module ClassMethods
8
13
  # Creates a policy to validate the params hash against the given schema. See
9
14
  # {Schemacop::Validator} for more information on how schemas are built.
10
15
  #
11
- # Using `policy_chain`, you can control when the validation is performed.
12
- # Per default, validation is done before performing the operation.
16
+ # Schemas are always validated on instantiation and, using defaults and
17
+ # casts, can also alter the params hash assigned to the operation.
18
+ #
19
+ # Only one schema can be active at a time. Defining multiple schemata or
20
+ # defining schemas in a subclass always override previously defined schemas.
13
21
  #
14
22
  # @param *args [Array] Parameters to pass at schema initialization
15
- # @param policy_chain [Symbol] The policy chain to perform the schema validation in
16
23
  # @yield Block to pass at schema initialization
17
- def schema(*args, policy_chain: :before_perform, &block)
18
- full_schema = Schemacop::Schema.new(*args, &block)
19
-
20
- policy policy_chain do
21
- full_schema.validate!(params)
22
- end
24
+ def schema(*args, &block)
25
+ self._op_schema = Schemacop::Schema.new(*args, &block)
23
26
  end
24
27
  end
25
28
  end
@@ -60,6 +60,12 @@ class RailsOps::Operation
60
60
  *ActionController::ParamsWrapper::EXCLUDE_PARAMETERS
61
61
  )
62
62
 
63
+ # Validate params
64
+ if _op_schema
65
+ puts 'validating schema'
66
+ @params = _op_schema.validate!(params)
67
+ end
68
+
63
69
  run_policies :on_init
64
70
  end
65
71
 
data/rails_ops.gemspec CHANGED
@@ -1,43 +1,33 @@
1
1
  # -*- encoding: utf-8 -*-
2
- # stub: rails_ops 1.0.21 ruby lib
2
+ # stub: rails_ops 1.1.0 ruby lib
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "rails_ops".freeze
6
- s.version = "1.0.21"
6
+ s.version = "1.1.0"
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-02-13"
11
+ s.date = "2020-02-25"
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
- s.rubygems_version = "3.0.6".freeze
13
+ s.rubygems_version = "3.1.2".freeze
14
14
  s.summary = "An operations service layer for rails projects.".freeze
15
15
  s.test_files = ["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]
16
16
 
17
17
  if s.respond_to? :specification_version then
18
18
  s.specification_version = 4
19
+ end
19
20
 
20
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
21
- s.add_development_dependency(%q<bundler>.freeze, [">= 0"])
22
- s.add_development_dependency(%q<rake>.freeze, [">= 0"])
23
- s.add_development_dependency(%q<sqlite3>.freeze, [">= 0"])
24
- s.add_development_dependency(%q<rubocop>.freeze, ["= 0.47.1"])
25
- s.add_runtime_dependency(%q<active_type>.freeze, ["~> 0.7.1"])
26
- s.add_runtime_dependency(%q<minitest>.freeze, [">= 0"])
27
- s.add_runtime_dependency(%q<rails>.freeze, [">= 0"])
28
- s.add_runtime_dependency(%q<request_store>.freeze, [">= 0"])
29
- s.add_runtime_dependency(%q<schemacop>.freeze, ["~> 2.0"])
30
- else
31
- s.add_dependency(%q<bundler>.freeze, [">= 0"])
32
- s.add_dependency(%q<rake>.freeze, [">= 0"])
33
- s.add_dependency(%q<sqlite3>.freeze, [">= 0"])
34
- s.add_dependency(%q<rubocop>.freeze, ["= 0.47.1"])
35
- s.add_dependency(%q<active_type>.freeze, ["~> 0.7.1"])
36
- s.add_dependency(%q<minitest>.freeze, [">= 0"])
37
- s.add_dependency(%q<rails>.freeze, [">= 0"])
38
- s.add_dependency(%q<request_store>.freeze, [">= 0"])
39
- s.add_dependency(%q<schemacop>.freeze, ["~> 2.0"])
40
- end
21
+ if s.respond_to? :add_runtime_dependency then
22
+ s.add_development_dependency(%q<bundler>.freeze, [">= 0"])
23
+ s.add_development_dependency(%q<rake>.freeze, [">= 0"])
24
+ s.add_development_dependency(%q<sqlite3>.freeze, [">= 0"])
25
+ s.add_development_dependency(%q<rubocop>.freeze, ["= 0.47.1"])
26
+ s.add_runtime_dependency(%q<active_type>.freeze, ["~> 0.7.1"])
27
+ s.add_runtime_dependency(%q<minitest>.freeze, [">= 0"])
28
+ s.add_runtime_dependency(%q<rails>.freeze, [">= 0"])
29
+ s.add_runtime_dependency(%q<request_store>.freeze, [">= 0"])
30
+ s.add_runtime_dependency(%q<schemacop>.freeze, ["~> 2.4.2"])
41
31
  else
42
32
  s.add_dependency(%q<bundler>.freeze, [">= 0"])
43
33
  s.add_dependency(%q<rake>.freeze, [">= 0"])
@@ -47,6 +37,6 @@ Gem::Specification.new do |s|
47
37
  s.add_dependency(%q<minitest>.freeze, [">= 0"])
48
38
  s.add_dependency(%q<rails>.freeze, [">= 0"])
49
39
  s.add_dependency(%q<request_store>.freeze, [">= 0"])
50
- s.add_dependency(%q<schemacop>.freeze, ["~> 2.0"])
40
+ s.add_dependency(%q<schemacop>.freeze, ["~> 2.4.2"])
51
41
  end
52
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.0.21
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sitrox
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-02-13 00:00:00.000000000 Z
11
+ date: 2020-02-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -128,14 +128,14 @@ dependencies:
128
128
  requirements:
129
129
  - - "~>"
130
130
  - !ruby/object:Gem::Version
131
- version: '2.0'
131
+ version: 2.4.2
132
132
  type: :runtime
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
- version: '2.0'
138
+ version: 2.4.2
139
139
  description:
140
140
  email:
141
141
  executables: []
@@ -286,7 +286,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
286
286
  - !ruby/object:Gem::Version
287
287
  version: '0'
288
288
  requirements: []
289
- rubygems_version: 3.0.6
289
+ rubygems_version: 3.1.2
290
290
  signing_key:
291
291
  specification_version: 4
292
292
  summary: An operations service layer for rails projects.