rails_ops 1.1.9 → 1.1.14
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 +24 -3
- data/README.md +6 -6
- data/VERSION +1 -1
- data/lib/rails_ops/configuration.rb +1 -0
- data/lib/rails_ops/mixins/model/nesting.rb +6 -0
- data/lib/rails_ops/mixins/schema_validation.rb +20 -1
- data/lib/rails_ops/operation.rb +1 -1
- data/lib/rails_ops/operation/model.rb +14 -0
- data/rails_ops.gemspec +4 -4
- metadata +9 -9
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: a002d9fd03c94430020b1f328a7d4fd9ca138c264d98305f8b8f9cca473cb327
|
|
4
|
+
data.tar.gz: d76ff0638ce22f5b0bd3714da541b8ae4d1ff88052abf41185837602fc2fea99
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: fec646c5faad65fbc38f24c135f6e060cfb0c451491c400a8b433b4417a164dad3f5a53ba44ac55dd1b2941dcd2dcd3d6dcd184f56490d32237d14316c479f99
|
|
7
|
+
data.tar.gz: 6114ce02f239ee5fd5341c5311ea6b889af0c99062c8b43832768a665987d54a0145d503affd85df846f48b354e259f8afa555edcf97873e44a81671ef23e67f
|
data/CHANGELOG.md
CHANGED
|
@@ -1,13 +1,34 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## 1.1.
|
|
3
|
+
## 1.1.14 (2020-12-22)
|
|
4
|
+
|
|
5
|
+
* Fix validation of unchanged nested models.
|
|
6
|
+
|
|
7
|
+
## 1.1.13 (2020-11-23)
|
|
8
|
+
|
|
9
|
+
* Update support for upcoming Schemacop 3
|
|
10
|
+
|
|
11
|
+
## 1.1.12 (2020-11-24)
|
|
12
|
+
|
|
13
|
+
* Add support for upcoming Schemacop 3. It is still backwards compatible and
|
|
14
|
+
the schemacop schema version still defaults to 2.
|
|
15
|
+
|
|
16
|
+
Note that support for the new Schemacop 3 features is not yet documented.
|
|
17
|
+
|
|
18
|
+
## 1.1.11 (2020-10-29)
|
|
19
|
+
|
|
20
|
+
* Add method `lazy_model` to `RailsOps::Operation::Model`
|
|
21
|
+
|
|
22
|
+
## 1.1.10 (2020-08-29)
|
|
23
|
+
|
|
24
|
+
* Fix parameter inspection bug introduced in 1.1.9.
|
|
25
|
+
|
|
26
|
+
## 1.1.9 (2020-08-28)
|
|
4
27
|
|
|
5
28
|
* Gracefully filter params when inspecting an operation. If the params included
|
|
6
29
|
numeric keys in `rails < 6`, this lead to an error. This error is now handeled
|
|
7
30
|
gracefully and params are not inspected.
|
|
8
31
|
|
|
9
|
-
## 1.1.9 (2020-07-22)
|
|
10
|
-
|
|
11
32
|
* Do not call `inspect` every time an op is run
|
|
12
33
|
|
|
13
34
|
## 1.1.8 (2020-07-08)
|
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/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
1.1.
|
|
1
|
+
1.1.14
|
|
@@ -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
|
|
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
|
data/lib/rails_ops/operation.rb
CHANGED
|
@@ -126,7 +126,7 @@ class RailsOps::Operation
|
|
|
126
126
|
inspection = self.class.name || '(AnonymousOp)'
|
|
127
127
|
if params
|
|
128
128
|
begin
|
|
129
|
-
inspected_params =
|
|
129
|
+
inspected_params = inspect_params(filtered_params)
|
|
130
130
|
rescue
|
|
131
131
|
inspected_params = '<could not inspect params>'
|
|
132
132
|
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
|
data/rails_ops.gemspec
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
|
2
|
-
# stub: rails_ops 1.1.
|
|
2
|
+
# stub: rails_ops 1.1.14 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.14"
|
|
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
|
+
s.date = "2020-12-22"
|
|
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.
|
|
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
|
|
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.14
|
|
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-
|
|
11
|
+
date: 2020-12-22 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -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.
|
|
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:
|