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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 13133ac9aa94bd3bf2d5c36a0f2a8f403b22e93a
4
- data.tar.gz: f3c8d506e05b17128f901ee5f9542767781fd31e
2
+ SHA256:
3
+ metadata.gz: e61a214549d7e786411e28c681be30b0bbd84de4cdbe25695c8091dc50e1aab2
4
+ data.tar.gz: 4454cf07b04c8d2fcb6b775aece855be413a09c8f13e28cec4483a946f18ca7d
5
5
  SHA512:
6
- metadata.gz: 9e36fa68828408d2e919ac0d91e53683d9b3c2cf5a5d2e7e2de8bfaa2d788ab6801d775c5531a9a5673a2ecc6c9959023f31bd41a4bb61ac4033e35eba3f4db9
7
- data.tar.gz: 647588c74bd01c2398cfdfa8e914b0bbc406f6bf43d99e25d5712a566c8beea0ab83736d7fe9cd5881832bdc0e754638e223979ec6cdab636325fff23eedb1bf
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.6
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
- _policy_chains[chain] += [block]
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
- unless attributes
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.6 ruby lib
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"
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-10"
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.6
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-10 00:00:00.000000000 Z
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
- rubyforge_project:
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.