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 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.