rails_ops 1.1.10 → 1.1.15

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: d153a870aafb98f323f6fb99ff5be9363a3310cc6eb97a0ee9bcf85d23367e8b
4
- data.tar.gz: 99ae30bd07dfe22a72b2c3922e1ae7bb58f5f181f508bb72a671b705567f3fee
3
+ metadata.gz: e642b313e8527aa067d9a700a00402440dbea14c7d0688c6f7cbb79d7141d354
4
+ data.tar.gz: 394c62326b3ccc8bebeaf1e24e8dfc27777d7d5daddd45a091d94d92f4d182b8
5
5
  SHA512:
6
- metadata.gz: b8adcfdf59177bcb66cfff1ed69d1ddc860d9be9e0d86728e95e0228e26753055a3ff1f3e14dc4e0cc1a911933e0d2a0af63271283533e7b6f0b474abc7415e3
7
- data.tar.gz: 91769b652399b5f2b99e03acfc3ba34b2ac058dce439f7863eb178e3922e8612d1155262217b8cbf058442789622437061f3c38f8fabf7ce9536691658289a22
6
+ metadata.gz: '091a05bf65bbda1e7bc254a7a783e38b688b6a9c2b445a7e7a4204e89ff737005283dd0218a75cf9da755d13981fc10d07633c01e12b42e7d8cc62ba5c940f0d'
7
+ data.tar.gz: 0a26c14fcc6adc35bad75dd98982c9503f0d00359203e164c0193c6e35ad255dca1cb0925cb2269cbd883302d00465affd8cac57a15270bfb1cceca98d426d08
@@ -1,8 +1,31 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.1.14 (2021-01-06)
4
+
5
+ * Allow `active_type >= 1.3.0`
6
+
7
+ ## 1.1.14 (2020-12-22)
8
+
9
+ * Fix validation of unchanged nested models.
10
+
11
+ ## 1.1.13 (2020-11-23)
12
+
13
+ * Update support for upcoming Schemacop 3
14
+
15
+ ## 1.1.12 (2020-11-24)
16
+
17
+ * Add support for upcoming Schemacop 3. It is still backwards compatible and
18
+ the schemacop schema version still defaults to 2.
19
+
20
+ Note that support for the new Schemacop 3 features is not yet documented.
21
+
22
+ ## 1.1.11 (2020-10-29)
23
+
24
+ * Add method `lazy_model` to `RailsOps::Operation::Model`
25
+
3
26
  ## 1.1.10 (2020-08-29)
4
27
 
5
- * Fix parameter inspection bug introduced in 1.1.10.
28
+ * Fix parameter inspection bug introduced in 1.1.9.
6
29
 
7
30
  ## 1.1.9 (2020-08-28)
8
31
 
data/README.md CHANGED
@@ -580,16 +580,16 @@ source operations.
580
580
 
581
581
  ```ruby
582
582
  RailsOps.hookup.draw do
583
- run Operations::Notifications::User::SendWelcomeEmail do
584
- on Operations::User::Create
583
+ run 'Operations::Notifications::User::SendWelcomeEmail' do
584
+ on 'Operations::User::Create'
585
585
  end
586
586
 
587
- run Operations::Todos::GenerateUserApprovalTodo do
588
- on Operations::User::Create
587
+ run 'Operations::Todos::GenerateUserApprovalTodo' do
588
+ on 'Operations::User::Create'
589
589
  end
590
590
 
591
- run Operations::Notification::SendTodoNotification do
592
- on Operations::Todos::GenerateUserApprovalTodo
591
+ run 'Operations::Notification::SendTodoNotification' do
592
+ on 'Operations::Todos::GenerateUserApprovalTodo'
593
593
  end
594
594
  end
595
595
  ```
data/Rakefile CHANGED
@@ -19,7 +19,7 @@ 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'
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.1.10
1
+ 1.1.15
@@ -3,4 +3,5 @@ class RailsOps::Configuration < ActiveType::Object
3
3
  attribute :authorization_backend, :string, default: nil
4
4
  attribute :trigger_hookups_without_authorization, :boolean, default: false
5
5
  attribute :ensure_authorize_called, :boolean, default: true
6
+ attribute :default_schemacop_version, :integer, default: 2
6
7
  end
@@ -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
 
@@ -21,8 +21,27 @@ module RailsOps::Mixins::SchemaValidation
21
21
  #
22
22
  # @param *args [Array] Parameters to pass at schema initialization
23
23
  # @yield Block to pass at schema initialization
24
- def schema(*args, &block)
24
+ def schema2(*args, &block)
25
25
  self._op_schema = Schemacop::Schema.new(*args, &block)
26
26
  end
27
+
28
+ def schema3(reference = nil, **options, &block)
29
+ if reference
30
+ self._op_schema = Schemacop::Schema3.new(:reference, options.merge(path: reference))
31
+ else
32
+ self._op_schema = Schemacop::Schema3.new(:hash, **options, &block)
33
+ end
34
+ end
35
+
36
+ def schema(*args, &block)
37
+ case RailsOps.config.default_schemacop_version
38
+ when 2
39
+ schema2(*args, &block)
40
+ when 3
41
+ schema3(*args, &block)
42
+ else
43
+ fail 'Schemacop schema versions supported are 2 and 3.'
44
+ end
45
+ end
27
46
  end
28
47
  end
@@ -3,6 +3,18 @@ class RailsOps::Operation::Model < RailsOps::Operation
3
3
  include RailsOps::Mixins::Model::Nesting
4
4
 
5
5
  class_attribute :_model_class
6
+ class_attribute :_lazy_model
7
+
8
+ # Works like `model` method (see its documentation), but takes a string as
9
+ # model class and constructs the effective model class lazily on first
10
+ # invocation of the `model` method (without params).
11
+ def self.lazy_model(model_class_name = nil, name = nil, &block)
12
+ self._lazy_model = {
13
+ model_class_name: model_class_name,
14
+ name: name,
15
+ block: block
16
+ }
17
+ end
6
18
 
7
19
  # Allows to set or get a model class associated with this operation.
8
20
  #
@@ -63,6 +75,8 @@ class RailsOps::Operation::Model < RailsOps::Operation
63
75
  else
64
76
  self._model_class = model_class
65
77
  end
78
+ elsif _lazy_model && _model_class.nil?
79
+ return model(_lazy_model[:model_class_name].safe_constantize, _lazy_model[:name], &_lazy_model[:block])
66
80
  elsif _model_class.nil?
67
81
  fail 'No model class has been set.'
68
82
  end
@@ -1,16 +1,16 @@
1
1
  # -*- encoding: utf-8 -*-
2
- # stub: rails_ops 1.1.10 ruby lib
2
+ # stub: rails_ops 1.1.15 ruby lib
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "rails_ops".freeze
6
- s.version = "1.1.10"
6
+ s.version = "1.1.15"
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-07-29"
11
+ s.date = "2021-01-06"
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.1.2".freeze
13
+ s.rubygems_version = "3.1.4".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
 
@@ -23,7 +23,7 @@ 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"])
@@ -33,7 +33,7 @@ Gem::Specification.new do |s|
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"])
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.10
4
+ version: 1.1.15
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sitrox
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-07-29 00:00:00.000000000 Z
11
+ date: 2021-01-06 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
@@ -136,8 +136,8 @@ dependencies:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
138
  version: 2.4.2
139
- description:
140
- email:
139
+ description:
140
+ email:
141
141
  executables: []
142
142
  extensions: []
143
143
  extra_rdoc_files: []
@@ -268,10 +268,10 @@ files:
268
268
  - test/unit/rails_ops/operation/model/update_test.rb
269
269
  - test/unit/rails_ops/operation/model_test.rb
270
270
  - test/unit/rails_ops/operation_test.rb
271
- homepage:
271
+ homepage:
272
272
  licenses: []
273
273
  metadata: {}
274
- post_install_message:
274
+ post_install_message:
275
275
  rdoc_options: []
276
276
  require_paths:
277
277
  - lib
@@ -286,8 +286,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
286
286
  - !ruby/object:Gem::Version
287
287
  version: '0'
288
288
  requirements: []
289
- rubygems_version: 3.1.2
290
- signing_key:
289
+ rubygems_version: 3.1.4
290
+ signing_key:
291
291
  specification_version: 4
292
292
  summary: An operations service layer for rails projects.
293
293
  test_files: