rails_ops 1.0.6 → 1.0.7
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 +5 -5
- data/CHANGELOG.md +9 -0
- data/README.md +15 -0
- data/VERSION +1 -1
- data/lib/rails_ops/mixins/policies.rb +6 -2
- data/lib/rails_ops/operation/model.rb +1 -4
- data/rails_ops.gemspec +3 -3
- metadata +3 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: e61a214549d7e786411e28c681be30b0bbd84de4cdbe25695c8091dc50e1aab2
|
4
|
+
data.tar.gz: 4454cf07b04c8d2fcb6b775aece855be413a09c8f13e28cec4483a946f18ca7d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 280b17f5e23c4a54d9c3ddce2708aea8a0951c8617341a944bc2b4de69162f2748344e945d876db6deeddc08a19f05b02ce9419d47126f280e7e50c92436d1f0
|
7
|
+
data.tar.gz: 5a20490bfd6fae31b72d180bea1caaa233320e570d7ff181c7c91f8763130ef81efce1c9647b030f35266cd11f01d985d817d5984244490e85534754483cbced
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,14 @@
|
|
1
1
|
# Change log
|
2
2
|
|
3
|
+
## 1.0.7 (2019-04-25)
|
4
|
+
|
5
|
+
* It is now possible to add a policy in front of the policy chain
|
6
|
+
instead of the end. It is however not guaranteed to be the first policy to be
|
7
|
+
run since multiple policies can be prepended to the chain. A prepended policy
|
8
|
+
can't access the operation model, since it is not set yet.
|
9
|
+
|
10
|
+
See PR#12.
|
11
|
+
|
3
12
|
## 1.0.6 (2019-04-10)
|
4
13
|
|
5
14
|
* Fix automatic controller mixin introduced in 1.0.4. Including the mixin into
|
data/README.md
CHANGED
@@ -384,6 +384,21 @@ class MyOp
|
|
384
384
|
end
|
385
385
|
```
|
386
386
|
|
387
|
+
The order inside the same policy chain depends on the time when a block was added.
|
388
|
+
You can prepend an action to a policy chain by setting `:prepend_action` to `true`:
|
389
|
+
|
390
|
+
```ruby
|
391
|
+
class MyOp
|
392
|
+
policy :on_init, prepend_action: true do
|
393
|
+
puts 'This is run first the operation has been instantiated.'
|
394
|
+
end
|
395
|
+
```
|
396
|
+
|
397
|
+
In this case the model is not yet set. That will happen later in the `:on_init` chain.
|
398
|
+
It is also important to note, that this block is
|
399
|
+
not guaranteed to be run first in the chain, if multiple blocks have set `:prepend_action` to true.
|
400
|
+
|
401
|
+
|
387
402
|
Calling sub-operations
|
388
403
|
----------------------
|
389
404
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.0.
|
1
|
+
1.0.7
|
@@ -21,13 +21,17 @@ module RailsOps::Mixins::Policies
|
|
21
21
|
module ClassMethods
|
22
22
|
# Register a new policy block that will be executed in the given `chain`.
|
23
23
|
# The policy block will be executed in the operation's instance context.
|
24
|
-
def policy(chain = :before_perform, &block)
|
24
|
+
def policy(chain = :before_perform, prepend_action: false, &block)
|
25
25
|
unless POLICY_CHAIN_KEYS.include?(chain)
|
26
26
|
fail "Unknown policy chain #{chain.inspect}, available are #{POLICY_CHAIN_KEYS.inspect}."
|
27
27
|
end
|
28
28
|
|
29
29
|
self._policy_chains = _policy_chains.dup
|
30
|
-
|
30
|
+
if prepend_action
|
31
|
+
_policy_chains[chain] = [block] + _policy_chains[chain]
|
32
|
+
else
|
33
|
+
_policy_chains[chain] += [block]
|
34
|
+
end
|
31
35
|
end
|
32
36
|
|
33
37
|
# Returns all registered validation blocks for this operation class.
|
@@ -110,10 +110,7 @@ class RailsOps::Operation::Model < RailsOps::Operation
|
|
110
110
|
def assign_attributes(attributes = nil, model: nil, without_protection: false, without_nested_models: true)
|
111
111
|
model ||= self.model
|
112
112
|
|
113
|
-
|
114
|
-
# Extract attributes from params hash
|
115
|
-
attributes = extract_attributes_from_params(model)
|
116
|
-
end
|
113
|
+
attributes ||= extract_attributes_from_params(model)
|
117
114
|
|
118
115
|
if without_nested_models
|
119
116
|
# Remove parameters that will be passed to nested model operations
|
data/rails_ops.gemspec
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
# stub: rails_ops 1.0.
|
2
|
+
# stub: rails_ops 1.0.7 ruby lib
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = "rails_ops".freeze
|
6
|
-
s.version = "1.0.
|
6
|
+
s.version = "1.0.7"
|
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 = "2019-04-
|
11
|
+
s.date = "2019-04-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, "RUBY_VERSION".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/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/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 = "2.6.6".freeze
|
14
14
|
s.summary = "An operations service layer for rails projects.".freeze
|
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.
|
4
|
+
version: 1.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sitrox
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-04-
|
11
|
+
date: 2019-04-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -284,8 +284,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
284
284
|
- !ruby/object:Gem::Version
|
285
285
|
version: '0'
|
286
286
|
requirements: []
|
287
|
-
|
288
|
-
rubygems_version: 2.5.2.3
|
287
|
+
rubygems_version: 3.0.3
|
289
288
|
signing_key:
|
290
289
|
specification_version: 4
|
291
290
|
summary: An operations service layer for rails projects.
|