rails_ops 1.4.1 → 1.4.3

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.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +102 -11
  3. data/Appraisals +11 -11
  4. data/CHANGELOG.md +18 -0
  5. data/README.md +12 -2
  6. data/Rakefile +3 -5
  7. data/VERSION +1 -1
  8. data/gemfiles/rails_6.0.gemfile +3 -3
  9. data/gemfiles/rails_6.1.gemfile +3 -3
  10. data/gemfiles/rails_7.0.gemfile +3 -3
  11. data/lib/generators/operation/operation_generator.rb +56 -9
  12. data/lib/generators/operation/templates/controller.erb +34 -23
  13. data/lib/generators/operation/templates/controller_wrapper.erb +14 -0
  14. data/lib/rails_ops/authorization_backend/abstract.rb +1 -1
  15. data/lib/rails_ops/authorization_backend/can_can_can.rb +3 -1
  16. data/lib/rails_ops/controller_mixin.rb +1 -1
  17. data/lib/rails_ops/hookup/dsl_validator.rb +2 -1
  18. data/lib/rails_ops/hookup.rb +1 -1
  19. data/lib/rails_ops/mixins/authorization.rb +2 -2
  20. data/lib/rails_ops/mixins/model/nesting.rb +22 -23
  21. data/lib/rails_ops/mixins/policies.rb +7 -7
  22. data/lib/rails_ops/mixins/routes.rb +1 -1
  23. data/lib/rails_ops/model_mixins/marshalling.rb +1 -1
  24. data/lib/rails_ops/operation/model/load.rb +2 -4
  25. data/lib/rails_ops/operation/model/update.rb +2 -2
  26. data/lib/rails_ops/operation/model.rb +1 -1
  27. data/lib/rails_ops/operation.rb +7 -4
  28. data/lib/rails_ops/profiler/node.rb +1 -1
  29. data/lib/rails_ops/profiler.rb +1 -1
  30. data/lib/rails_ops.rb +43 -43
  31. data/rails_ops.gemspec +5 -5
  32. data/test/dummy/bin/bundle +1 -1
  33. data/test/dummy/bin/setup +1 -1
  34. data/test/dummy/bin/update +1 -1
  35. data/test/dummy/bin/yarn +5 -7
  36. data/test/dummy/config/environments/production.rb +1 -1
  37. data/test/dummy/config/spring.rb +2 -2
  38. data/test/test_helper.rb +5 -5
  39. data/test/unit/rails_ops/generators/operation_generator_test.rb +108 -12
  40. data/test/unit/rails_ops/mixins/model/deep_nesting_test.rb +69 -10
  41. data/test/unit/rails_ops/mixins/param_authorization_test.rb +3 -3
  42. data/test/unit/rails_ops/mixins/policies_test.rb +2 -2
  43. data/test/unit/rails_ops/operation/update_auth_test.rb +2 -0
  44. data/test/unit/rails_ops/operation/update_lazy_auth_test.rb +1 -0
  45. data/test/unit/rails_ops/operation_test.rb +1 -1
  46. metadata +12 -11
@@ -31,15 +31,15 @@ module RailsOps::Mixins::Model::Nesting
31
31
  if reflection.nil?
32
32
  fail "Association #{attribute} could not be found for #{model.model_name}."
33
33
  elsif !reflection.belongs_to?
34
- fail 'Method nest_model_op only supports :belongs_to associations, '\
35
- "but association #{attribute} of model #{model.model_name} is a "\
34
+ fail 'Method nest_model_op only supports :belongs_to associations, ' \
35
+ "but association #{attribute} of model #{model.model_name} is a " \
36
36
  "#{reflection.macro} association."
37
37
  elsif reflection.options[:autosave] != false
38
- fail "Association #{attribute} of #{model.model_name} has :autosave turned on. "\
38
+ fail "Association #{attribute} of #{model.model_name} has :autosave turned on. " \
39
39
  'This is not supported by nest_model_op.'
40
40
  elsif !reflection.options[:validate]
41
- fail "Association #{attribute} of #{model.model_name} has :validate turned off. "\
42
- 'This is not supported by nest_model_op.'
41
+ fail "Association #{attribute} of #{model.model_name} has :validate turned off. " \
42
+ 'This is not supported by nest_model_op.'
43
43
  end
44
44
 
45
45
  # ---------------------------------------------------------------
@@ -61,11 +61,9 @@ module RailsOps::Mixins::Model::Nesting
61
61
  # ---------------------------------------------------------------
62
62
  # Validate inverse association reflection if given
63
63
  # ---------------------------------------------------------------
64
- if (inverse_reflection = reflection.inverse_of)
65
- if inverse_reflection.options[:autosave] != false
66
- fail "Association #{inverse_reflection.name} of #{inverse_reflection.active_record} has :autosave turned on. "\
67
- 'This is not supported by nest_model_op.'
68
- end
64
+ if (inverse_reflection = reflection.inverse_of) && (inverse_reflection.options[:autosave] != false)
65
+ fail "Association #{inverse_reflection.name} of #{inverse_reflection.active_record} has :autosave turned on. " \
66
+ 'This is not supported by nest_model_op.'
69
67
  end
70
68
 
71
69
  # ---------------------------------------------------------------
@@ -73,12 +71,12 @@ module RailsOps::Mixins::Model::Nesting
73
71
  # ---------------------------------------------------------------
74
72
  self._nested_model_ops = _nested_model_ops.merge(
75
73
  attribute => {
76
- klass: klass,
77
- param_key: param_key,
78
- attribute_name: reflection.class_name.underscore,
79
- params_proc: params_block,
74
+ klass: klass,
75
+ param_key: param_key,
76
+ attribute_name: reflection.class_name.underscore,
77
+ params_proc: params_block,
80
78
  lookup_via_id_on_update: lookup_via_id_on_update,
81
- allow_id: allow_id
79
+ allow_id: allow_id
82
80
  }
83
81
  )
84
82
  end
@@ -104,7 +102,7 @@ module RailsOps::Mixins::Model::Nesting
104
102
 
105
103
  def build_nested_model_ops(action)
106
104
  # Validate action
107
- fail 'Unsupported action.' unless %i(create update).include?(action)
105
+ fail 'Unsupported action.' unless %i[create update].include?(action)
108
106
 
109
107
  # Make sure that this method can only be run once per operation
110
108
  fail 'Nested model operations can only be built once.' if @nested_model_ops
@@ -126,11 +124,12 @@ module RailsOps::Mixins::Model::Nesting
126
124
  # Wrap parameters for nested model operation
127
125
  param_key = config[:param_key] || config[:klass].model.model_name.param_key
128
126
 
129
- if action == :create
127
+ case action
128
+ when :create
130
129
  wrapped_params = {
131
130
  param_key => op_params
132
131
  }
133
- elsif action == :update
132
+ when :update
134
133
  if config[:lookup_via_id_on_update]
135
134
  foreign_key = model.class.reflect_on_association(attribute).foreign_key
136
135
  id = model.send(foreign_key)
@@ -139,7 +138,7 @@ module RailsOps::Mixins::Model::Nesting
139
138
  end
140
139
 
141
140
  wrapped_params = {
142
- :id => id,
141
+ :id => id,
143
142
  param_key => op_params
144
143
  }
145
144
  else
@@ -173,15 +172,15 @@ module RailsOps::Mixins::Model::Nesting
173
172
  # line also makes sure a model is built.
174
173
  model.validate!
175
174
 
175
+ # Make sure nested model operations are built
176
+ fail 'Nested model operations are not built yet. Make sure the model is built.' unless @nested_model_ops
177
+
176
178
  # Validate all unchanged nested models as the above call to "validate!" only validates
177
179
  # associations that are changed.
178
- @nested_model_ops.keys.each do |attribute|
180
+ @nested_model_ops.each_key do |attribute|
179
181
  model.send(attribute).validate!
180
182
  end
181
183
 
182
- # Make sure nested model operations are build
183
- fail 'Nested model operations are not built yet. Make sure the model is built.' unless @nested_model_ops
184
-
185
184
  @nested_model_ops.each do |attribute, op|
186
185
  # Run the nested model operation and fail hard if a validation error
187
186
  # arises. This should generally not happen as the whole hierarchy has been
@@ -5,17 +5,17 @@
5
5
  module RailsOps::Mixins::Policies
6
6
  extend ActiveSupport::Concern
7
7
 
8
- POLICY_CHAIN_KEYS = [
9
- :on_init,
10
- :before_perform,
11
- :after_perform,
12
- :before_nested_model_ops,
13
- :before_model_save
8
+ POLICY_CHAIN_KEYS = %i[
9
+ on_init
10
+ before_perform
11
+ after_perform
12
+ before_nested_model_ops
13
+ before_model_save
14
14
  ].freeze
15
15
 
16
16
  included do
17
17
  class_attribute :_policy_chains
18
- self._policy_chains = Hash[POLICY_CHAIN_KEYS.map { |key| [key, [].freeze] }]
18
+ self._policy_chains = POLICY_CHAIN_KEYS.map { |key| [key, [].freeze] }.to_h
19
19
  end
20
20
 
21
21
  module ClassMethods
@@ -6,7 +6,7 @@ module RailsOps::Mixins::Routes
6
6
  # this class on the first call. This is not thread-safe, but the worst case is
7
7
  # that this is performed more than once.
8
8
  def self.container_class
9
- @container ||= Class.new do
9
+ @container_class ||= Class.new do
10
10
  include Rails.application.routes.url_helpers
11
11
 
12
12
  attr_reader :url_options
@@ -5,7 +5,7 @@ module RailsOps
5
5
  # with default procs which is not supported by `Marshal.dump`. This mixin
6
6
  # therefore excludes this instance variable from being dumped and loaded.
7
7
  module Marshalling
8
- UNMARSHALED_VARIABLES = %i(@parent_op).freeze
8
+ UNMARSHALED_VARIABLES = %i[@parent_op].freeze
9
9
 
10
10
  extend ActiveSupport::Concern
11
11
 
@@ -45,7 +45,7 @@ class RailsOps::Operation::Model::Load < RailsOps::Operation::Model
45
45
  # that currently, :shared only works for MySql, Postgresql and Oracle DB,
46
46
  # other adapters always use the exclusive lock.
47
47
  def self.lock_mode(lock_mode)
48
- fail "Unknown lock mode #{lock_mode}" unless %i(shared exclusive).include?(lock_mode)
48
+ fail "Unknown lock mode #{lock_mode}" unless %i[shared exclusive].include?(lock_mode)
49
49
 
50
50
  self._lock_mode = lock_mode
51
51
  end
@@ -108,12 +108,10 @@ class RailsOps::Operation::Model::Load < RailsOps::Operation::Model
108
108
  adapter_type = ActiveRecord::Base.connection.adapter_name.downcase.to_sym
109
109
 
110
110
  case adapter_type
111
- when :mysql, :mysql2
111
+ when :mysql, :mysql2, :oracleenhanced
112
112
  return 'LOCK IN SHARE MODE'
113
113
  when :postgresql
114
114
  return 'FOR SHARE'
115
- when :oracleenhanced
116
- return 'LOCK IN SHARE MODE'
117
115
  end
118
116
 
119
117
  # Don't return anything, which will make the `lock` statement
@@ -20,8 +20,8 @@ class RailsOps::Operation::Model::Update < RailsOps::Operation::Model::Load
20
20
  if self.class._model_authorization_lazy
21
21
  if load_model_authorization_action.nil?
22
22
  fail RailsOps::Exceptions::NoAuthorizationPerformed,
23
- "Operation #{self.class.name} must specify a "\
24
- 'load_model_authorization_action because model '\
23
+ "Operation #{self.class.name} must specify a " \
24
+ 'load_model_authorization_action because model ' \
25
25
  'authorization is configured to be lazy.'
26
26
  else
27
27
  authorize_model! load_model_authorization_action, model
@@ -70,7 +70,7 @@ class RailsOps::Operation::Model < RailsOps::Operation
70
70
  end
71
71
 
72
72
  # Set virtual STI name if given.
73
- if model_class && model_class.name
73
+ if model_class&.name
74
74
  _model_class.virtual_sti_name = model_class.name
75
75
  end
76
76
 
@@ -39,9 +39,10 @@ class RailsOps::Operation
39
39
  # @param params [Hash] Optional parameters hash
40
40
  def initialize(context_or_params = {}, params = {})
41
41
  # Handle parameter signature
42
- if context_or_params.is_a?(RailsOps::Context)
42
+ case context_or_params
43
+ when RailsOps::Context
43
44
  context = context_or_params
44
- elsif context_or_params.is_a?(Hash) || context_or_params.is_a?(ActionController::Parameters)
45
+ when Hash, ActionController::Parameters
45
46
  context = nil
46
47
  params = context_or_params
47
48
  end
@@ -80,7 +81,9 @@ class RailsOps::Operation
80
81
 
81
82
  # Returns a copy of the operation's params, wrapped in an OpenStruct object.
82
83
  def osparams
84
+ # rubocop: disable Style/OpenStructUse
83
85
  @osparams ||= OpenStruct.new(params)
86
+ # rubocop: enable Style/OpenStructUse
84
87
  end
85
88
 
86
89
  # Return a hash of parameters with all sensitive data replaced.
@@ -131,7 +134,7 @@ class RailsOps::Operation
131
134
  if params
132
135
  begin
133
136
  inspected_params = inspect_params(filtered_params)
134
- rescue
137
+ rescue StandardError
135
138
  inspected_params = '<could not inspect params>'
136
139
  end
137
140
  inspection += " (#{inspected_params})"
@@ -222,7 +225,7 @@ class RailsOps::Operation
222
225
  # elegant and transparent approach as explained in the issue.
223
226
  def with_rollback_on_exception(&_block)
224
227
  yield
225
- rescue => e
228
+ rescue StandardError => e
226
229
  fail RailsOps::Exceptions::RollbackRequired, e, e.backtrace
227
230
  end
228
231
 
@@ -4,7 +4,7 @@ module RailsOps
4
4
  @object_id = object_id
5
5
  @description = description
6
6
  @parent = parent
7
- parent.add_child(self) if parent
7
+ parent&.add_child(self)
8
8
  @children = []
9
9
  @erroneous = false
10
10
  @t_start = Time.now
@@ -5,7 +5,7 @@ module RailsOps
5
5
  self.tstore_current_parent = node
6
6
  begin
7
7
  res = yield
8
- rescue
8
+ rescue StandardError
9
9
  node.erroneous!
10
10
  fail
11
11
  ensure
data/lib/rails_ops.rb CHANGED
@@ -50,46 +50,46 @@ end
50
50
  # ---------------------------------------------------------------
51
51
  # Require RailsOps
52
52
  # ---------------------------------------------------------------
53
- require 'rails_ops/authorization_backend/abstract.rb'
54
- require 'rails_ops/configuration.rb'
55
- require 'rails_ops/context.rb'
56
- require 'rails_ops/controller_mixin.rb'
57
- require 'rails_ops/exceptions.rb'
58
- require 'rails_ops/hooked_job.rb' if defined?(ActiveJob)
59
- require 'rails_ops/hookup.rb'
60
- require 'rails_ops/hookup/dsl.rb'
61
- require 'rails_ops/hookup/dsl_validator.rb'
62
- require 'rails_ops/hookup/hook.rb'
63
- require 'rails_ops/log_subscriber.rb'
64
- require 'rails_ops/mixins.rb'
65
- require 'rails_ops/mixins/authorization.rb'
66
- require 'rails_ops/mixins/param_authorization.rb'
67
- require 'rails_ops/mixins/log_settings.rb'
68
- require 'rails_ops/mixins/model.rb'
69
- require 'rails_ops/mixins/model/authorization.rb'
70
- require 'rails_ops/mixins/model/nesting.rb'
71
- require 'rails_ops/mixins/policies.rb'
72
- require 'rails_ops/mixins/require_context.rb'
73
- require 'rails_ops/mixins/routes.rb'
74
- require 'rails_ops/mixins/schema_validation.rb'
75
- require 'rails_ops/mixins/sub_ops.rb'
76
- require 'rails_ops/model_mixins.rb'
77
- require 'rails_ops/model_mixins/ar_extension.rb'
78
- require 'rails_ops/model_mixins/parent_op.rb'
79
- require 'rails_ops/model_mixins/sti_fixes.rb'
80
- require 'rails_ops/model_mixins/marshalling.rb'
81
- require 'rails_ops/model_mixins/virtual_attributes.rb'
82
- require 'rails_ops/model_mixins/virtual_attributes/virtual_column_wrapper.rb'
83
- require 'rails_ops/model_mixins/virtual_has_one.rb'
84
- require 'rails_ops/model_mixins/virtual_model_name.rb'
85
- require 'rails_ops/operation.rb'
86
- require 'rails_ops/operation/model.rb'
87
- require 'rails_ops/operation/model/load.rb'
88
- require 'rails_ops/operation/model/create.rb'
89
- require 'rails_ops/operation/model/destroy.rb'
90
- require 'rails_ops/operation/model/update.rb'
91
- require 'rails_ops/profiler.rb'
92
- require 'rails_ops/profiler/node.rb'
93
- require 'rails_ops/railtie.rb' if defined?(Rails)
94
- require 'rails_ops/scoped_env.rb'
95
- require 'rails_ops/virtual_model.rb'
53
+ require 'rails_ops/authorization_backend/abstract'
54
+ require 'rails_ops/configuration'
55
+ require 'rails_ops/context'
56
+ require 'rails_ops/controller_mixin'
57
+ require 'rails_ops/exceptions'
58
+ require 'rails_ops/hooked_job' if defined?(ActiveJob)
59
+ require 'rails_ops/hookup'
60
+ require 'rails_ops/hookup/dsl'
61
+ require 'rails_ops/hookup/dsl_validator'
62
+ require 'rails_ops/hookup/hook'
63
+ require 'rails_ops/log_subscriber'
64
+ require 'rails_ops/mixins'
65
+ require 'rails_ops/mixins/authorization'
66
+ require 'rails_ops/mixins/param_authorization'
67
+ require 'rails_ops/mixins/log_settings'
68
+ require 'rails_ops/mixins/model'
69
+ require 'rails_ops/mixins/model/authorization'
70
+ require 'rails_ops/mixins/model/nesting'
71
+ require 'rails_ops/mixins/policies'
72
+ require 'rails_ops/mixins/require_context'
73
+ require 'rails_ops/mixins/routes'
74
+ require 'rails_ops/mixins/schema_validation'
75
+ require 'rails_ops/mixins/sub_ops'
76
+ require 'rails_ops/model_mixins'
77
+ require 'rails_ops/model_mixins/ar_extension'
78
+ require 'rails_ops/model_mixins/parent_op'
79
+ require 'rails_ops/model_mixins/sti_fixes'
80
+ require 'rails_ops/model_mixins/marshalling'
81
+ require 'rails_ops/model_mixins/virtual_attributes'
82
+ require 'rails_ops/model_mixins/virtual_attributes/virtual_column_wrapper'
83
+ require 'rails_ops/model_mixins/virtual_has_one'
84
+ require 'rails_ops/model_mixins/virtual_model_name'
85
+ require 'rails_ops/operation'
86
+ require 'rails_ops/operation/model'
87
+ require 'rails_ops/operation/model/load'
88
+ require 'rails_ops/operation/model/create'
89
+ require 'rails_ops/operation/model/destroy'
90
+ require 'rails_ops/operation/model/update'
91
+ require 'rails_ops/profiler'
92
+ require 'rails_ops/profiler/node'
93
+ require 'rails_ops/railtie' if defined?(Rails)
94
+ require 'rails_ops/scoped_env'
95
+ require 'rails_ops/virtual_model'
data/rails_ops.gemspec CHANGED
@@ -1,15 +1,15 @@
1
1
  # -*- encoding: utf-8 -*-
2
- # stub: rails_ops 1.4.1 ruby lib
2
+ # stub: rails_ops 1.4.3 ruby lib
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "rails_ops".freeze
6
- s.version = "1.4.1"
6
+ s.version = "1.4.3"
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 = "2023-02-21"
12
- s.files = [".github/workflows/rubocop.yml".freeze, ".github/workflows/ruby.yml".freeze, ".gitignore".freeze, ".releaser_config".freeze, ".rubocop.yml".freeze, "Appraisals".freeze, "CHANGELOG.md".freeze, "Gemfile".freeze, "LICENSE".freeze, "README.md".freeze, "Rakefile".freeze, "VERSION".freeze, "gemfiles/rails_6.0.gemfile".freeze, "gemfiles/rails_6.1.gemfile".freeze, "gemfiles/rails_7.0.gemfile".freeze, "lib/generators/operation/USAGE".freeze, "lib/generators/operation/operation_generator.rb".freeze, "lib/generators/operation/templates/controller.erb".freeze, "lib/generators/operation/templates/create.erb".freeze, "lib/generators/operation/templates/destroy.erb".freeze, "lib/generators/operation/templates/load.erb".freeze, "lib/generators/operation/templates/update.erb".freeze, "lib/generators/operation/templates/view.erb".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_mixins.rb".freeze, "lib/rails_ops/model_mixins/ar_extension.rb".freeze, "lib/rails_ops/model_mixins/marshalling.rb".freeze, "lib/rails_ops/model_mixins/parent_op.rb".freeze, "lib/rails_ops/model_mixins/sti_fixes.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/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/animal.rb".freeze, "test/dummy/app/models/application_record.rb".freeze, "test/dummy/app/models/bird.rb".freeze, "test/dummy/app/models/cat.rb".freeze, "test/dummy/app/models/computer.rb".freeze, "test/dummy/app/models/concerns/.keep".freeze, "test/dummy/app/models/cpu.rb".freeze, "test/dummy/app/models/dog.rb".freeze, "test/dummy/app/models/flower.rb".freeze, "test/dummy/app/models/group.rb".freeze, "test/dummy/app/models/mainboard.rb".freeze, "test/dummy/app/models/nightingale.rb".freeze, "test/dummy/app/models/phoenix.rb".freeze, "test/dummy/app/models/user.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/generators/operation_generator_test.rb".freeze, "test/unit/rails_ops/mixins/model/deep_nesting_test.rb".freeze, "test/unit/rails_ops/mixins/param_authorization_test.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/sti_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/update_auth_test.rb".freeze, "test/unit/rails_ops/operation/update_lazy_auth_test.rb".freeze, "test/unit/rails_ops/operation_test.rb".freeze]
11
+ s.date = "2023-03-27"
12
+ s.files = [".github/workflows/rubocop.yml".freeze, ".github/workflows/ruby.yml".freeze, ".gitignore".freeze, ".releaser_config".freeze, ".rubocop.yml".freeze, "Appraisals".freeze, "CHANGELOG.md".freeze, "Gemfile".freeze, "LICENSE".freeze, "README.md".freeze, "Rakefile".freeze, "VERSION".freeze, "gemfiles/rails_6.0.gemfile".freeze, "gemfiles/rails_6.1.gemfile".freeze, "gemfiles/rails_7.0.gemfile".freeze, "lib/generators/operation/USAGE".freeze, "lib/generators/operation/operation_generator.rb".freeze, "lib/generators/operation/templates/controller.erb".freeze, "lib/generators/operation/templates/controller_wrapper.erb".freeze, "lib/generators/operation/templates/create.erb".freeze, "lib/generators/operation/templates/destroy.erb".freeze, "lib/generators/operation/templates/load.erb".freeze, "lib/generators/operation/templates/update.erb".freeze, "lib/generators/operation/templates/view.erb".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_mixins.rb".freeze, "lib/rails_ops/model_mixins/ar_extension.rb".freeze, "lib/rails_ops/model_mixins/marshalling.rb".freeze, "lib/rails_ops/model_mixins/parent_op.rb".freeze, "lib/rails_ops/model_mixins/sti_fixes.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/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/animal.rb".freeze, "test/dummy/app/models/application_record.rb".freeze, "test/dummy/app/models/bird.rb".freeze, "test/dummy/app/models/cat.rb".freeze, "test/dummy/app/models/computer.rb".freeze, "test/dummy/app/models/concerns/.keep".freeze, "test/dummy/app/models/cpu.rb".freeze, "test/dummy/app/models/dog.rb".freeze, "test/dummy/app/models/flower.rb".freeze, "test/dummy/app/models/group.rb".freeze, "test/dummy/app/models/mainboard.rb".freeze, "test/dummy/app/models/nightingale.rb".freeze, "test/dummy/app/models/phoenix.rb".freeze, "test/dummy/app/models/user.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/generators/operation_generator_test.rb".freeze, "test/unit/rails_ops/mixins/model/deep_nesting_test.rb".freeze, "test/unit/rails_ops/mixins/param_authorization_test.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/sti_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/update_auth_test.rb".freeze, "test/unit/rails_ops/operation/update_lazy_auth_test.rb".freeze, "test/unit/rails_ops/operation_test.rb".freeze]
13
13
  s.rubygems_version = "3.4.6".freeze
14
14
  s.summary = "An operations service layer for rails projects.".freeze
15
15
  s.test_files = ["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/animal.rb".freeze, "test/dummy/app/models/application_record.rb".freeze, "test/dummy/app/models/bird.rb".freeze, "test/dummy/app/models/cat.rb".freeze, "test/dummy/app/models/computer.rb".freeze, "test/dummy/app/models/concerns/.keep".freeze, "test/dummy/app/models/cpu.rb".freeze, "test/dummy/app/models/dog.rb".freeze, "test/dummy/app/models/flower.rb".freeze, "test/dummy/app/models/group.rb".freeze, "test/dummy/app/models/mainboard.rb".freeze, "test/dummy/app/models/nightingale.rb".freeze, "test/dummy/app/models/phoenix.rb".freeze, "test/dummy/app/models/user.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/generators/operation_generator_test.rb".freeze, "test/unit/rails_ops/mixins/model/deep_nesting_test.rb".freeze, "test/unit/rails_ops/mixins/param_authorization_test.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/sti_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/update_auth_test.rb".freeze, "test/unit/rails_ops/operation/update_lazy_auth_test.rb".freeze, "test/unit/rails_ops/operation_test.rb".freeze]
@@ -23,7 +23,7 @@ Gem::Specification.new do |s|
23
23
  s.add_development_dependency(%q<cancancan>.freeze, [">= 0"])
24
24
  s.add_development_dependency(%q<pry>.freeze, [">= 0"])
25
25
  s.add_development_dependency(%q<colorize>.freeze, [">= 0"])
26
- s.add_development_dependency(%q<rubocop>.freeze, ["= 0.47.1"])
26
+ s.add_development_dependency(%q<rubocop>.freeze, ["= 1.45.1"])
27
27
  s.add_development_dependency(%q<sprockets-rails>.freeze, [">= 0"])
28
28
  s.add_runtime_dependency(%q<active_type>.freeze, [">= 1.3.0"])
29
29
  s.add_runtime_dependency(%q<minitest>.freeze, [">= 0"])
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env ruby
2
- ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
2
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__)
3
3
  load Gem.bin_path('bundler', 'bundle')
data/test/dummy/bin/setup CHANGED
@@ -4,7 +4,7 @@ require 'fileutils'
4
4
  include FileUtils
5
5
 
6
6
  # path to your application root.
7
- APP_ROOT = Pathname.new File.expand_path('../../', __FILE__)
7
+ APP_ROOT = Pathname.new File.expand_path('..', __dir__)
8
8
 
9
9
  def system!(*args)
10
10
  system(*args) || abort("\n== Command #{args} failed ==")
@@ -4,7 +4,7 @@ require 'fileutils'
4
4
  include FileUtils
5
5
 
6
6
  # path to your application root.
7
- APP_ROOT = Pathname.new File.expand_path('../../', __FILE__)
7
+ APP_ROOT = Pathname.new File.expand_path('..', __dir__)
8
8
 
9
9
  def system!(*args)
10
10
  system(*args) || abort("\n== Command #{args} failed ==")
data/test/dummy/bin/yarn CHANGED
@@ -1,11 +1,9 @@
1
1
  #!/usr/bin/env ruby
2
2
  VENDOR_PATH = File.expand_path('..', __dir__)
3
3
  Dir.chdir(VENDOR_PATH) do
4
- begin
5
- exec "yarnpkg #{ARGV.join(' ')}"
6
- rescue Errno::ENOENT
7
- $stderr.puts 'Yarn executable was not detected in the system.'
8
- $stderr.puts 'Download Yarn at https://yarnpkg.com/en/docs/install'
9
- exit 1
10
- end
4
+ exec "yarnpkg #{ARGV.join(' ')}"
5
+ rescue Errno::ENOENT
6
+ warn 'Yarn executable was not detected in the system.'
7
+ warn 'Download Yarn at https://yarnpkg.com/en/docs/install'
8
+ exit 1
11
9
  end
@@ -74,7 +74,7 @@ Rails.application.configure do
74
74
  config.active_support.deprecation = :notify
75
75
 
76
76
  # Use default logging formatter so that PID and timestamp are not suppressed.
77
- config.log_formatter = ::Logger::Formatter.new
77
+ config.log_formatter = Logger::Formatter.new
78
78
 
79
79
  # Use a different logger for distributed setups.
80
80
  # require 'syslog/logger'
@@ -1,6 +1,6 @@
1
- %w(
1
+ %w[
2
2
  .ruby-version
3
3
  .rbenv-vars
4
4
  tmp/restart.txt
5
5
  tmp/caching-dev.txt
6
- ).each { |path| Spring.watch(path) }
6
+ ].each { |path| Spring.watch(path) }
data/test/test_helper.rb CHANGED
@@ -1,4 +1,4 @@
1
- require File.expand_path('../../test/dummy/config/environment.rb', __FILE__)
1
+ require File.expand_path('../test/dummy/config/environment.rb', __dir__)
2
2
  # ActiveRecord::Migrator.migrations_paths = [File.expand_path("../../test/dummy/db/migrate", __FILE__)]
3
3
  require 'rails/test_help'
4
4
  require 'pry'
@@ -14,13 +14,13 @@ Rails::TestUnitReporter.executable = 'bin/test'
14
14
 
15
15
  # Load fixtures from the engine
16
16
  if ActiveSupport::TestCase.respond_to?(:fixture_path=)
17
- ActiveSupport::TestCase.fixture_path = File.expand_path('../fixtures', __FILE__)
17
+ ActiveSupport::TestCase.fixture_path = File.expand_path('fixtures', __dir__)
18
18
  ActionDispatch::IntegrationTest.fixture_path = ActiveSupport::TestCase.fixture_path
19
- ActiveSupport::TestCase.file_fixture_path = ActiveSupport::TestCase.fixture_path + '/files'
19
+ ActiveSupport::TestCase.file_fixture_path = File.join(ActiveSupport::TestCase.fixture_path, '/files')
20
20
  ActiveSupport::TestCase.fixtures :all
21
21
  end
22
22
 
23
- load File.dirname(__FILE__) + '/dummy/db/schema.rb'
23
+ load File.join(File.dirname(__FILE__), '/dummy/db/schema.rb')
24
24
 
25
25
  require 'request_store'
26
26
 
@@ -39,7 +39,7 @@ module TestHelper
39
39
  fail TypeError, "Expected #{expected.inspect} to be a kind of String or Regexp, not #{expected.class}"
40
40
  end
41
41
 
42
- ex = assert_raises(exception, *msg) { yield }
42
+ ex = assert_raises(exception, *msg, &block)
43
43
  msg = message(msg, '') { "Expected Exception(#{exception}) was raised, but the message doesn't match" }
44
44
 
45
45
  if assert == :assert_equal