rails_ops 1.0.6 → 1.0.7
Sign up to get free protection for your applications and to get access to all the features.
- 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.
|