rails_ops 1.4.1 → 1.4.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +102 -11
- data/Appraisals +11 -11
- data/CHANGELOG.md +18 -0
- data/README.md +12 -2
- data/Rakefile +3 -5
- data/VERSION +1 -1
- data/gemfiles/rails_6.0.gemfile +3 -3
- data/gemfiles/rails_6.1.gemfile +3 -3
- data/gemfiles/rails_7.0.gemfile +3 -3
- data/lib/generators/operation/operation_generator.rb +56 -9
- data/lib/generators/operation/templates/controller.erb +34 -23
- data/lib/generators/operation/templates/controller_wrapper.erb +14 -0
- data/lib/rails_ops/authorization_backend/abstract.rb +1 -1
- data/lib/rails_ops/authorization_backend/can_can_can.rb +3 -1
- data/lib/rails_ops/controller_mixin.rb +1 -1
- data/lib/rails_ops/hookup/dsl_validator.rb +2 -1
- data/lib/rails_ops/hookup.rb +1 -1
- data/lib/rails_ops/mixins/authorization.rb +2 -2
- data/lib/rails_ops/mixins/model/nesting.rb +22 -23
- data/lib/rails_ops/mixins/policies.rb +7 -7
- data/lib/rails_ops/mixins/routes.rb +1 -1
- data/lib/rails_ops/model_mixins/marshalling.rb +1 -1
- data/lib/rails_ops/operation/model/load.rb +2 -4
- data/lib/rails_ops/operation/model/update.rb +2 -2
- data/lib/rails_ops/operation/model.rb +1 -1
- data/lib/rails_ops/operation.rb +7 -4
- data/lib/rails_ops/profiler/node.rb +1 -1
- data/lib/rails_ops/profiler.rb +1 -1
- data/lib/rails_ops.rb +43 -43
- data/rails_ops.gemspec +5 -5
- data/test/dummy/bin/bundle +1 -1
- data/test/dummy/bin/setup +1 -1
- data/test/dummy/bin/update +1 -1
- data/test/dummy/bin/yarn +5 -7
- data/test/dummy/config/environments/production.rb +1 -1
- data/test/dummy/config/spring.rb +2 -2
- data/test/test_helper.rb +5 -5
- data/test/unit/rails_ops/generators/operation_generator_test.rb +108 -12
- data/test/unit/rails_ops/mixins/model/deep_nesting_test.rb +69 -10
- data/test/unit/rails_ops/mixins/param_authorization_test.rb +3 -3
- data/test/unit/rails_ops/mixins/policies_test.rb +2 -2
- data/test/unit/rails_ops/operation/update_auth_test.rb +2 -0
- data/test/unit/rails_ops/operation/update_lazy_auth_test.rb +1 -0
- data/test/unit/rails_ops/operation_test.rb +1 -1
- 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
|
-
|
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
|
-
|
66
|
-
|
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:
|
77
|
-
param_key:
|
78
|
-
attribute_name:
|
79
|
-
params_proc:
|
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:
|
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
|
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
|
-
|
127
|
+
case action
|
128
|
+
when :create
|
130
129
|
wrapped_params = {
|
131
130
|
param_key => op_params
|
132
131
|
}
|
133
|
-
|
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
|
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.
|
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
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
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 =
|
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
|
-
@
|
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
|
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
|
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
|
data/lib/rails_ops/operation.rb
CHANGED
@@ -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
|
-
|
42
|
+
case context_or_params
|
43
|
+
when RailsOps::Context
|
43
44
|
context = context_or_params
|
44
|
-
|
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
|
|
data/lib/rails_ops/profiler.rb
CHANGED
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
|
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
|
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
|
94
|
-
require 'rails_ops/scoped_env
|
95
|
-
require 'rails_ops/virtual_model
|
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.
|
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.
|
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-
|
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, ["=
|
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"])
|
data/test/dummy/bin/bundle
CHANGED
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('
|
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/update
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('
|
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
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
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 =
|
77
|
+
config.log_formatter = Logger::Formatter.new
|
78
78
|
|
79
79
|
# Use a different logger for distributed setups.
|
80
80
|
# require 'syslog/logger'
|
data/test/dummy/config/spring.rb
CHANGED
data/test/test_helper.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require File.expand_path('
|
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('
|
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
|
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__)
|
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)
|
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
|