rails_ops 1.1.4 → 1.1.9

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
2
  SHA256:
3
- metadata.gz: 5e92309cb9695a9a40cc114e43dc43d204e00ba041d6f29da8a4debe4d1b9369
4
- data.tar.gz: 5210b10eb4a5e13515f37a845c4b9a332d2f514de5251dce54753b93e363aa93
3
+ metadata.gz: 71da3242717173869f38ccd3f40f17ae4a395b068feaac00e5147a8133bb1544
4
+ data.tar.gz: 45f855da0ce0deb441e7d22f91b40c721af7daefdfd3e31e4b45df3af66ce3a2
5
5
  SHA512:
6
- metadata.gz: 59a9cafba888578f8d9420543060576d07e83a1c4f1f1f76e91766af185997465ea1d1ac5648123731bb036bfca77abe4e1a079abdc0166b85a97ca35b35f218
7
- data.tar.gz: ce6eb1524e3f3c8bcd1c62c960f6cc67abb76dadb04117c63d49d389d0b02f1a44659683db36aaf71bca721ab00c3f7f92f169d3a29053e75ef2750c96e00292
6
+ metadata.gz: d125f6a04f7eaa72862480b0e5319af1d6f21a991b53d0eeb72522b5f2eaa59fae4fd1192d8b1fc14f53038902844545b718355e0fa03b9bb59f0c707d226358
7
+ data.tar.gz: 9e92c942492f0b6c3dad3a9663ff6f04f90781f0f22d08424d83f791c524f0dc614c81feb1cd710e7f419a90ce0ffe7e5f763b1ada27639eb0f260f939b89ed6
@@ -1,5 +1,33 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.1.10 (2020-08-28)
4
+
5
+ * Gracefully filter params when inspecting an operation. If the params included
6
+ numeric keys in `rails < 6`, this lead to an error. This error is now handeled
7
+ gracefully and params are not inspected.
8
+
9
+ ## 1.1.9 (2020-07-22)
10
+
11
+ * Do not call `inspect` every time an op is run
12
+
13
+ ## 1.1.8 (2020-07-08)
14
+
15
+ * Fix bug where only the first hooked operation was called
16
+
17
+ ## 1.1.7 (2020-06-18)
18
+
19
+ * Add controller / helper method `model?`
20
+
21
+ ## 1.1.6 (2020-04-08)
22
+
23
+ * Fix suppressed validation errors by operations called via hookup. Now the
24
+ exception {RailsOps::Exceptions::HookupOpValidationFailed} is thrown if a hook
25
+ target operation throws a validation error throws a validation error
26
+
27
+ ## 1.1.5 (2020-03-23)
28
+
29
+ * Upgrade `active_type` to `~> 1.3.0` for Rails 6 compatibility
30
+
3
31
  ## 1.1.4 (2020-03-10)
4
32
 
5
33
  * Remove debug output.
data/README.md CHANGED
@@ -1361,6 +1361,9 @@ RailsOps conveniently provides you with a `model` instance method, which is a
1361
1361
  shortcut for `op.model`. This is particularly useful since this is available as
1362
1362
  a view helper method as well, see next section.
1363
1363
 
1364
+ You can check whether a model is available by using the `model?` method, which
1365
+ is available in both controllers and views.
1366
+
1364
1367
  ### View helper methods
1365
1368
 
1366
1369
  The following controller methods are automatically provided as helper methods
data/Rakefile CHANGED
@@ -19,7 +19,7 @@ task :gemspec do
19
19
  spec.add_development_dependency 'rake'
20
20
  spec.add_development_dependency 'sqlite3'
21
21
  spec.add_development_dependency 'rubocop', '0.47.1'
22
- spec.add_dependency 'active_type', '~> 0.7.1'
22
+ spec.add_dependency 'active_type', '~> 1.3.0'
23
23
  spec.add_dependency 'minitest'
24
24
  spec.add_dependency 'rails'
25
25
  spec.add_dependency 'request_store'
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.1.4
1
+ 1.1.9
@@ -21,6 +21,7 @@ module RailsOps
21
21
  included do
22
22
  if defined?(helper_method)
23
23
  helper_method :model
24
+ helper_method :model?
24
25
  helper_method :op
25
26
  helper_method :op?
26
27
  helper_method :op_context
@@ -85,6 +86,10 @@ module RailsOps
85
86
  return op.model
86
87
  end
87
88
 
89
+ def model?
90
+ !!(@model || op? && op.respond_to?(:model) && op.model)
91
+ end
92
+
88
93
  # Filters the `params` hash for use with RailsOps. This removes certain
89
94
  # web-specific parameters based on `EXCEPT_PARAMS`.
90
95
  def filter_op_params(params)
@@ -16,4 +16,6 @@ module RailsOps::Exceptions
16
16
  super original_exception.message
17
17
  end
18
18
  end
19
+
20
+ class HookupOpValidationFailed < SubOpValidationFailed; end
19
21
  end
@@ -82,7 +82,12 @@ class RailsOps::Hookup
82
82
  end
83
83
 
84
84
  op = op_class.new(context, params)
85
- op.run!
85
+
86
+ begin
87
+ op.run!
88
+ rescue *op.validation_errors => e
89
+ fail RailsOps::Exceptions::HookupOpValidationFailed, e
90
+ end
86
91
  end
87
92
  end
88
93
  end
@@ -107,7 +107,7 @@ class RailsOps::Operation
107
107
  # any validation exception.
108
108
  def run!
109
109
  ActiveSupport::Notifications.instrument('run.rails_ops', operation: self) do
110
- ::RailsOps::Profiler.profile(object_id, inspect) do
110
+ ::RailsOps::Profiler.profile(object_id) do
111
111
  fail 'An operation can only be performed once.' if performed?
112
112
  @performed = true
113
113
  run_policies :before_perform
@@ -125,7 +125,12 @@ class RailsOps::Operation
125
125
  def inspect
126
126
  inspection = self.class.name || '(AnonymousOp)'
127
127
  if params
128
- inspection += " (#{inspect_params(filtered_params)})"
128
+ begin
129
+ inspected_params = inspected_params(filtered_params)
130
+ rescue
131
+ inspected_params = '<could not inspect params>'
132
+ end
133
+ inspection += " (#{inspected_params})"
129
134
  end
130
135
  return inspection
131
136
  end
@@ -1,14 +1,14 @@
1
1
  # -*- encoding: utf-8 -*-
2
- # stub: rails_ops 1.1.4 ruby lib
2
+ # stub: rails_ops 1.1.9 ruby lib
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "rails_ops".freeze
6
- s.version = "1.1.4"
6
+ s.version = "1.1.9"
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-03-10"
11
+ s.date = "2020-07-28"
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
13
  s.rubygems_version = "3.1.2".freeze
14
14
  s.summary = "An operations service layer for rails projects.".freeze
@@ -23,7 +23,7 @@ Gem::Specification.new do |s|
23
23
  s.add_development_dependency(%q<rake>.freeze, [">= 0"])
24
24
  s.add_development_dependency(%q<sqlite3>.freeze, [">= 0"])
25
25
  s.add_development_dependency(%q<rubocop>.freeze, ["= 0.47.1"])
26
- s.add_runtime_dependency(%q<active_type>.freeze, ["~> 0.7.1"])
26
+ s.add_runtime_dependency(%q<active_type>.freeze, ["~> 1.3.0"])
27
27
  s.add_runtime_dependency(%q<minitest>.freeze, [">= 0"])
28
28
  s.add_runtime_dependency(%q<rails>.freeze, [">= 0"])
29
29
  s.add_runtime_dependency(%q<request_store>.freeze, [">= 0"])
@@ -33,7 +33,7 @@ Gem::Specification.new do |s|
33
33
  s.add_dependency(%q<rake>.freeze, [">= 0"])
34
34
  s.add_dependency(%q<sqlite3>.freeze, [">= 0"])
35
35
  s.add_dependency(%q<rubocop>.freeze, ["= 0.47.1"])
36
- s.add_dependency(%q<active_type>.freeze, ["~> 0.7.1"])
36
+ s.add_dependency(%q<active_type>.freeze, ["~> 1.3.0"])
37
37
  s.add_dependency(%q<minitest>.freeze, [">= 0"])
38
38
  s.add_dependency(%q<rails>.freeze, [">= 0"])
39
39
  s.add_dependency(%q<request_store>.freeze, [">= 0"])
@@ -150,4 +150,9 @@ class RailsOps::OperationTest < ActiveSupport::TestCase
150
150
  assert_equal 'RailsOps::OperationTest::BASIC_OP ({"foo"=>:bar})',
151
151
  BASIC_OP.new(foo: :bar).inspect
152
152
  end
153
+
154
+ def test_inspect_with_numeric_param_keys
155
+ assert_equal 'RailsOps::OperationTest::BASIC_OP ({1=>2})',
156
+ BASIC_OP.new(1 => 2).inspect
157
+ end
153
158
  end
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
4
+ version: 1.1.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sitrox
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-03-10 00:00:00.000000000 Z
11
+ date: 2020-07-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -72,14 +72,14 @@ dependencies:
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 0.7.1
75
+ version: 1.3.0
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 0.7.1
82
+ version: 1.3.0
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: minitest
85
85
  requirement: !ruby/object:Gem::Requirement