rails_ops 1.4.0 → 1.4.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +102 -11
  3. data/Appraisals +11 -11
  4. data/CHANGELOG.md +15 -0
  5. data/Rakefile +3 -5
  6. data/VERSION +1 -1
  7. data/gemfiles/rails_6.0.gemfile +3 -3
  8. data/gemfiles/rails_6.1.gemfile +3 -3
  9. data/gemfiles/rails_7.0.gemfile +3 -3
  10. data/lib/generators/operation/operation_generator.rb +3 -3
  11. data/lib/rails_ops/authorization_backend/abstract.rb +1 -1
  12. data/lib/rails_ops/authorization_backend/can_can_can.rb +3 -1
  13. data/lib/rails_ops/controller_mixin.rb +1 -1
  14. data/lib/rails_ops/hookup/dsl_validator.rb +2 -1
  15. data/lib/rails_ops/hookup.rb +1 -1
  16. data/lib/rails_ops/mixins/authorization.rb +2 -2
  17. data/lib/rails_ops/mixins/model/nesting.rb +23 -23
  18. data/lib/rails_ops/mixins/policies.rb +7 -7
  19. data/lib/rails_ops/mixins/routes.rb +1 -1
  20. data/lib/rails_ops/model_mixins/marshalling.rb +1 -1
  21. data/lib/rails_ops/operation/model/load.rb +2 -4
  22. data/lib/rails_ops/operation/model/update.rb +2 -2
  23. data/lib/rails_ops/operation/model.rb +1 -1
  24. data/lib/rails_ops/operation.rb +7 -4
  25. data/lib/rails_ops/profiler/node.rb +1 -1
  26. data/lib/rails_ops/profiler.rb +1 -1
  27. data/lib/rails_ops.rb +43 -43
  28. data/rails_ops.gemspec +19 -38
  29. data/test/dummy/bin/bundle +1 -1
  30. data/test/dummy/bin/setup +1 -1
  31. data/test/dummy/bin/update +1 -1
  32. data/test/dummy/bin/yarn +5 -7
  33. data/test/dummy/config/environments/production.rb +1 -1
  34. data/test/dummy/config/spring.rb +2 -2
  35. data/test/test_helper.rb +5 -5
  36. data/test/unit/rails_ops/generators/operation_generator_test.rb +10 -12
  37. data/test/unit/rails_ops/mixins/model/deep_nesting_test.rb +69 -10
  38. data/test/unit/rails_ops/mixins/param_authorization_test.rb +3 -3
  39. data/test/unit/rails_ops/mixins/policies_test.rb +2 -2
  40. data/test/unit/rails_ops/operation/update_auth_test.rb +2 -0
  41. data/test/unit/rails_ops/operation/update_lazy_auth_test.rb +1 -0
  42. data/test/unit/rails_ops/operation_test.rb +1 -1
  43. metadata +11 -11
@@ -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,52 +1,33 @@
1
1
  # -*- encoding: utf-8 -*-
2
- # stub: rails_ops 1.4.0 ruby lib
2
+ # stub: rails_ops 1.4.2 ruby lib
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "rails_ops".freeze
6
- s.version = "1.4.0"
6
+ s.version = "1.4.2"
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"
11
+ s.date = "2023-03-27"
12
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]
13
- s.rubygems_version = "3.3.20".freeze
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]
16
16
 
17
- if s.respond_to? :specification_version then
18
- s.specification_version = 4
19
- end
17
+ s.specification_version = 4
20
18
 
21
- if s.respond_to? :add_runtime_dependency then
22
- s.add_development_dependency(%q<appraisal>.freeze, [">= 0"])
23
- s.add_development_dependency(%q<bundler>.freeze, [">= 0"])
24
- s.add_development_dependency(%q<rake>.freeze, [">= 0"])
25
- s.add_development_dependency(%q<sqlite3>.freeze, [">= 0"])
26
- s.add_development_dependency(%q<cancancan>.freeze, [">= 0"])
27
- s.add_development_dependency(%q<pry>.freeze, [">= 0"])
28
- s.add_development_dependency(%q<colorize>.freeze, [">= 0"])
29
- s.add_development_dependency(%q<rubocop>.freeze, ["= 0.47.1"])
30
- s.add_development_dependency(%q<sprockets-rails>.freeze, [">= 0"])
31
- s.add_runtime_dependency(%q<active_type>.freeze, [">= 1.3.0"])
32
- s.add_runtime_dependency(%q<minitest>.freeze, [">= 0"])
33
- s.add_runtime_dependency(%q<rails>.freeze, [">= 0"])
34
- s.add_runtime_dependency(%q<request_store>.freeze, [">= 0"])
35
- s.add_runtime_dependency(%q<schemacop>.freeze, [">= 2.4.2", "<= 3.1"])
36
- else
37
- s.add_dependency(%q<appraisal>.freeze, [">= 0"])
38
- s.add_dependency(%q<bundler>.freeze, [">= 0"])
39
- s.add_dependency(%q<rake>.freeze, [">= 0"])
40
- s.add_dependency(%q<sqlite3>.freeze, [">= 0"])
41
- s.add_dependency(%q<cancancan>.freeze, [">= 0"])
42
- s.add_dependency(%q<pry>.freeze, [">= 0"])
43
- s.add_dependency(%q<colorize>.freeze, [">= 0"])
44
- s.add_dependency(%q<rubocop>.freeze, ["= 0.47.1"])
45
- s.add_dependency(%q<sprockets-rails>.freeze, [">= 0"])
46
- s.add_dependency(%q<active_type>.freeze, [">= 1.3.0"])
47
- s.add_dependency(%q<minitest>.freeze, [">= 0"])
48
- s.add_dependency(%q<rails>.freeze, [">= 0"])
49
- s.add_dependency(%q<request_store>.freeze, [">= 0"])
50
- s.add_dependency(%q<schemacop>.freeze, [">= 2.4.2", "<= 3.1"])
51
- end
19
+ s.add_development_dependency(%q<appraisal>.freeze, [">= 0"])
20
+ s.add_development_dependency(%q<bundler>.freeze, [">= 0"])
21
+ s.add_development_dependency(%q<rake>.freeze, [">= 0"])
22
+ s.add_development_dependency(%q<sqlite3>.freeze, [">= 0"])
23
+ s.add_development_dependency(%q<cancancan>.freeze, [">= 0"])
24
+ s.add_development_dependency(%q<pry>.freeze, [">= 0"])
25
+ s.add_development_dependency(%q<colorize>.freeze, [">= 0"])
26
+ s.add_development_dependency(%q<rubocop>.freeze, ["= 1.45.1"])
27
+ s.add_development_dependency(%q<sprockets-rails>.freeze, [">= 0"])
28
+ s.add_runtime_dependency(%q<active_type>.freeze, [">= 1.3.0"])
29
+ s.add_runtime_dependency(%q<minitest>.freeze, [">= 0"])
30
+ s.add_runtime_dependency(%q<rails>.freeze, [">= 0"])
31
+ s.add_runtime_dependency(%q<request_store>.freeze, [">= 0"])
32
+ s.add_runtime_dependency(%q<schemacop>.freeze, [">= 2.4.2", "<= 3.1"])
52
33
  end
@@ -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
@@ -10,12 +10,10 @@ class OperationGeneratorTest < Rails::Generators::TestCase
10
10
 
11
11
  # Add an empty routes file
12
12
  Dir.mkdir(File.join(destination_root, 'config'))
13
- File.open(File.join(destination_root, 'config', 'routes.rb'), 'w') do |f|
14
- f.write <<~ROUTES
15
- Rails.application.routes.draw do
16
- end
17
- ROUTES
18
- end
13
+ File.write(File.join(destination_root, 'config', 'routes.rb'), <<~ROUTES)
14
+ Rails.application.routes.draw do
15
+ end
16
+ ROUTES
19
17
  end
20
18
 
21
19
  def test_all
@@ -42,7 +40,7 @@ class OperationGeneratorTest < Rails::Generators::TestCase
42
40
  assert_routes
43
41
 
44
42
  # Check that the views were skipped
45
- %w(index show new edit).each do |view|
43
+ %w[index show new edit].each do |view|
46
44
  assert_no_file "app/views/users/#{view}.html.haml"
47
45
  end
48
46
  end
@@ -85,7 +83,7 @@ class OperationGeneratorTest < Rails::Generators::TestCase
85
83
  end
86
84
 
87
85
  # Check that the views were skipped
88
- %w(index show new edit).each do |view|
86
+ %w[index show new edit].each do |view|
89
87
  assert_no_file "app/views/users/#{view}.html.haml"
90
88
  end
91
89
  end
@@ -104,7 +102,7 @@ class OperationGeneratorTest < Rails::Generators::TestCase
104
102
  end
105
103
 
106
104
  # Check that the views were skipped
107
- %w(index show new edit).each do |view|
105
+ %w[index show new edit].each do |view|
108
106
  assert_no_file "app/views/users/#{view}.html.haml"
109
107
  end
110
108
  end
@@ -154,7 +152,7 @@ class OperationGeneratorTest < Rails::Generators::TestCase
154
152
  end
155
153
 
156
154
  # Check that views are generated
157
- %w(index show new edit).each do |view|
155
+ %w[index show new edit].each do |view|
158
156
  assert_file "app/views/admin/users/#{view}.html.haml"
159
157
  end
160
158
 
@@ -195,7 +193,7 @@ class OperationGeneratorTest < Rails::Generators::TestCase
195
193
  end
196
194
 
197
195
  # Check that views are generated
198
- %w(index show new edit).each do |view|
196
+ %w[index show new edit].each do |view|
199
197
  assert_file "app/views/admin/foo/users/#{view}.html.haml"
200
198
  end
201
199
 
@@ -235,7 +233,7 @@ class OperationGeneratorTest < Rails::Generators::TestCase
235
233
  end
236
234
 
237
235
  def assert_views
238
- %w(index show new edit).each do |view|
236
+ %w[index show new edit].each do |view|
239
237
  assert_file "app/views/users/#{view}.html.haml"
240
238
  end
241
239
  end
@@ -25,6 +25,28 @@ class RailsOps::Mixins::Model::DeepNestingTest < ActiveSupport::TestCase
25
25
  nest_model_op :mainboard, MAINBOARD_CREATION_OP
26
26
  end
27
27
 
28
+ CPU_UPDATE_OP = Class.new(RailsOps::Operation::Model::Update) do
29
+ model Cpu do
30
+ validates :name, presence: true
31
+ end
32
+ end
33
+
34
+ MAINBOARD_UPDATE_OP = Class.new(RailsOps::Operation::Model::Update) do
35
+ model Mainboard do
36
+ validates :name, presence: true
37
+ end
38
+
39
+ nest_model_op :cpu, CPU_UPDATE_OP
40
+ end
41
+
42
+ COMPUTER_UPDATE_OP = Class.new(RailsOps::Operation::Model::Update) do
43
+ model Computer do
44
+ validates :name, presence: true
45
+ end
46
+
47
+ nest_model_op :mainboard, MAINBOARD_UPDATE_OP
48
+ end
49
+
28
50
  def test_create_cpu
29
51
  assert_nothing_raised do
30
52
  CPU_CREATION_OP.run!(cpu: { name: 'CPU' })
@@ -35,7 +57,7 @@ class RailsOps::Mixins::Model::DeepNestingTest < ActiveSupport::TestCase
35
57
  assert_nothing_raised do
36
58
  MAINBOARD_CREATION_OP.run!(
37
59
  mainboard: {
38
- name: 'Mainboard',
60
+ name: 'Mainboard',
39
61
  cpu_attributes: {
40
62
  name: 'CPU'
41
63
  }
@@ -48,10 +70,10 @@ class RailsOps::Mixins::Model::DeepNestingTest < ActiveSupport::TestCase
48
70
  model = assert_nothing_raised do
49
71
  COMPUTER_CREATION_OP.run!(
50
72
  computer: {
51
- name: 'Computer',
73
+ name: 'Computer',
52
74
 
53
75
  mainboard_attributes: {
54
- name: 'Mainboard',
76
+ name: 'Mainboard',
55
77
 
56
78
  cpu_attributes: {
57
79
  name: 'CPU'
@@ -74,7 +96,7 @@ class RailsOps::Mixins::Model::DeepNestingTest < ActiveSupport::TestCase
74
96
  op = COMPUTER_CREATION_OP.new(
75
97
  computer: {
76
98
  mainboard_attributes: {
77
- name: 'Mainboard',
99
+ name: 'Mainboard',
78
100
 
79
101
  cpu_attributes: {
80
102
  name: 'CPU'
@@ -94,7 +116,7 @@ class RailsOps::Mixins::Model::DeepNestingTest < ActiveSupport::TestCase
94
116
  def test_create_computer_level_2_validation_error
95
117
  op = COMPUTER_CREATION_OP.new(
96
118
  computer: {
97
- name: 'Computer',
119
+ name: 'Computer',
98
120
 
99
121
  mainboard_attributes: {
100
122
  cpu_attributes: {
@@ -108,7 +130,7 @@ class RailsOps::Mixins::Model::DeepNestingTest < ActiveSupport::TestCase
108
130
  op.run!
109
131
  end
110
132
 
111
- assert_equal ["Mainboard is invalid"], op.model.errors.full_messages
133
+ assert_equal ['Mainboard is invalid'], op.model.errors.full_messages
112
134
  refute op.model.persisted?
113
135
 
114
136
  assert_equal ["Name can't be blank"], op.model.mainboard.errors.full_messages
@@ -118,10 +140,10 @@ class RailsOps::Mixins::Model::DeepNestingTest < ActiveSupport::TestCase
118
140
  def test_create_computer_level_3_validation_error
119
141
  op = COMPUTER_CREATION_OP.new(
120
142
  computer: {
121
- name: 'Computer',
143
+ name: 'Computer',
122
144
 
123
145
  mainboard_attributes: {
124
- name: 'Mainboard',
146
+ name: 'Mainboard',
125
147
 
126
148
  cpu_attributes: {}
127
149
  }
@@ -132,13 +154,50 @@ class RailsOps::Mixins::Model::DeepNestingTest < ActiveSupport::TestCase
132
154
  op.run!
133
155
  end
134
156
 
135
- assert_equal ["Mainboard is invalid"], op.model.errors.full_messages
157
+ assert_equal ['Mainboard is invalid'], op.model.errors.full_messages
136
158
  refute op.model.persisted?
137
159
 
138
- assert_equal ["Cpu is invalid"], op.model.mainboard.errors.full_messages
160
+ assert_equal ['Cpu is invalid'], op.model.mainboard.errors.full_messages
139
161
  refute op.model.mainboard.persisted?
140
162
 
141
163
  assert_equal ["Name can't be blank"], op.model.mainboard.cpu.errors.full_messages
142
164
  refute op.model.mainboard.cpu.persisted?
143
165
  end
166
+
167
+ def test_update_validation_error
168
+ create_op = COMPUTER_CREATION_OP.new(
169
+ computer: {
170
+ name: 'Computer',
171
+
172
+ mainboard_attributes: {
173
+ name: 'Mainboard',
174
+
175
+ cpu_attributes: {
176
+ name: 'CPU'
177
+ }
178
+ }
179
+ }
180
+ )
181
+
182
+ create_op.run!
183
+
184
+ update_op = COMPUTER_UPDATE_OP.new(
185
+ id: Computer.first,
186
+ computer: {
187
+ name: 'Computer',
188
+
189
+ mainboard_attributes: {
190
+ name: '',
191
+
192
+ cpu_attributes: {
193
+ name: 'CPU'
194
+ }
195
+ }
196
+ }
197
+ )
198
+
199
+ refute update_op.run
200
+ assert_equal :name, update_op.model.mainboard.errors.first.attribute
201
+ assert_equal :blank, update_op.model.mainboard.errors.first.type
202
+ end
144
203
  end
@@ -32,9 +32,9 @@ class RailsOps::Mixins::ParamAuthorizationTest < ActiveSupport::TestCase
32
32
 
33
33
  model ::Group
34
34
 
35
- authorize_param %i(foo), :foo, :subject_1
36
- authorize_param %i(bar), :bar, :subject_1
37
- authorize_param %i(bar baz), :baz, :subject_1
35
+ authorize_param %i[foo], :foo, :subject_1
36
+ authorize_param %i[bar], :bar, :subject_1
37
+ authorize_param %i[bar baz], :baz, :subject_1
38
38
 
39
39
  def perform
40
40
  # Do nothing
@@ -29,7 +29,7 @@ class RailsOps::Mixins::PoliciesTest < ActiveSupport::TestCase
29
29
  end
30
30
  end
31
31
 
32
- assert_equal %i(on_init default before_perform perform after_perform),
32
+ assert_equal %i[on_init default before_perform perform after_perform],
33
33
  op.run!.sequence
34
34
  end
35
35
 
@@ -52,7 +52,7 @@ class RailsOps::Mixins::PoliciesTest < ActiveSupport::TestCase
52
52
  def perform; end
53
53
  end
54
54
 
55
- assert_equal %i(before_perform_1 before_perform_2),
55
+ assert_equal %i[before_perform_1 before_perform_2],
56
56
  op.run!.sequence
57
57
  end
58
58
  end
@@ -20,6 +20,8 @@ class RailsOps::Operation::UpdateLazyAuthTest < ActiveSupport::TestCase
20
20
  include CanCan::Ability
21
21
 
22
22
  def initialize(read: false, update: false)
23
+ super()
24
+
23
25
  can :read, Group if read
24
26
  can :update, Group if update
25
27
  end
@@ -20,6 +20,7 @@ class RailsOps::Operation::UpdateLazyAuthTest < ActiveSupport::TestCase
20
20
  include CanCan::Ability
21
21
 
22
22
  def initialize(read: false, update: false)
23
+ super()
23
24
  can :read, Group if read
24
25
  can :update, Group if update
25
26
  end
@@ -99,7 +99,7 @@ class RailsOps::OperationTest < ActiveSupport::TestCase
99
99
  end
100
100
 
101
101
  def test_params
102
- params = { a: 1, 'b': 1 }
102
+ params = { a: 1, b: 1 }
103
103
  op = BASIC_OP.new(params)
104
104
 
105
105
  # ---------------------------------------------------------------