rails_ops 1.4.2 → 1.4.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/CHANGELOG.md +17 -2
  4. data/README.md +12 -2
  5. data/Rakefile +1 -0
  6. data/VERSION +1 -1
  7. data/lib/generators/operation/operation_generator.rb +54 -7
  8. data/lib/generators/operation/templates/controller.erb +34 -23
  9. data/lib/generators/operation/templates/controller_wrapper.erb +14 -0
  10. data/lib/rails_ops/hookup/dsl_validator.rb +1 -1
  11. data/lib/rails_ops/hookup.rb +1 -1
  12. data/lib/rails_ops/mixins/sub_ops.rb +2 -0
  13. data/lib/rails_ops/operation.rb +1 -1
  14. data/rails_ops.gemspec +6 -5
  15. data/test/dummy/app/controllers/group_controller.rb +28 -0
  16. data/test/dummy/app/models/ability.rb +7 -0
  17. data/test/dummy/app/models/animal.rb +5 -1
  18. data/test/dummy/app/models/bird.rb +3 -1
  19. data/test/dummy/app/models/phoenix.rb +3 -1
  20. data/test/dummy/config/environments/development.rb +2 -0
  21. data/test/dummy/config/environments/production.rb +2 -0
  22. data/test/dummy/config/hookup.rb +5 -0
  23. data/test/dummy/config/routes.rb +1 -0
  24. data/test/test_helper.rb +5 -0
  25. data/test/unit/rails_ops/generators/operation_generator_test.rb +98 -0
  26. data/test/unit/rails_ops/hookup_test.rb +82 -0
  27. data/test/unit/rails_ops/mixins/controller_test.rb +21 -0
  28. data/test/unit/rails_ops/mixins/model/deep_nesting_test.rb +62 -2
  29. data/test/unit/rails_ops/mixins/model/marshalling_test.rb +36 -0
  30. data/test/unit/rails_ops/operation/auth_test.rb +120 -0
  31. data/test/unit/rails_ops/operation/model/destroy_test.rb +31 -0
  32. data/test/unit/rails_ops/operation/model/load_test.rb +9 -0
  33. data/test/unit/rails_ops/operation/model_test.rb +24 -0
  34. data/test/unit/rails_ops/operation_test.rb +121 -0
  35. data/test/unit/rails_ops/profiler_test.rb +11 -0
  36. metadata +36 -5
  37. data/test/unit/rails_ops/operation/update_auth_test.rb +0 -64
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 545583c613d3f9b9c7599f93af3351790cc5b223ab3c2a8ec3a7962eb4143e2c
4
- data.tar.gz: 9bc1a949fd81b6e05744561f76550ae72ddb8c18795de7dce47a6220ba9622a1
3
+ metadata.gz: 9c18eddf15b9f713101e8cd2e783c01bffb0c664ea1e76b497c6a4ae0ff07eae
4
+ data.tar.gz: 4f4d8e61f2d3de18e6215417016de13251625c2fa238b78a37bf52c629cb2ede
5
5
  SHA512:
6
- metadata.gz: 23c48dbf356b7aa7032d2be737a93e405bd7fd1e63148d28f8c05036cf709a7c20e4951ec76dcfa72e55a71bdcbb5361bb67a29fcd3f13aba45c6b1e52592aec
7
- data.tar.gz: 5e9d9889e87a6a98450aa97d0b24487cfe3526376b1cb05dc0ec90d899b0372a93ca3675485a7491cb23a02fb80644e579355f545ffb5ce23e343af61a8a7e96
6
+ metadata.gz: 88f1d0f750f1bd794962984fa2d4e8fb37c71456e00ef8a7b795cc5fc08a748e57f1757b7bd61e8a7db9e2b76a42bae6e4ab3047568a36288a15c6cde2953aad
7
+ data.tar.gz: 11432ac0dd217407e7f3209b9201d7d408746db1d4c7d813dec706ce42b3c893551f5bfeda81e454dd8daaa459811ab01e71239e33af26c0bbfe5f6eedf022ad
data/.gitignore CHANGED
@@ -16,3 +16,4 @@
16
16
  /test/dummy/log/
17
17
  /test/tmp/
18
18
  /gemfiles/*.lock
19
+ /.idea
data/CHANGELOG.md CHANGED
@@ -1,6 +1,20 @@
1
1
  # Changelog
2
2
 
3
- ## 1.4.2 (2023-03-20)
3
+ ## 1.4.4 (2023-07-10)
4
+
5
+ * Adapt method `sub_op` to catch `<op-class>.validation_errors` and re-throw
6
+ them as `RailsOps::Exceptions::SubOpValidationFailed`.
7
+
8
+ ## 1.4.3 (2023-03-27)
9
+
10
+ * Extend the `operation` generator to accept additional flags to skip the
11
+ generation of certain actions. In particular, the `--skip-index`,
12
+ `--skip-show`, `--skip-create`, `--skip-update` and `--skip-destroy` flags
13
+ were added.
14
+
15
+ Internal reference: `#111041`.
16
+
17
+ ## 1.4.2 (2023-03-27)
4
18
 
5
19
  * Update the `operation` generator such that it complies with the naming
6
20
  conventions laid out in [Placing and naming
@@ -23,7 +37,8 @@
23
37
 
24
38
  ### Upgrading
25
39
 
26
- Please see #33 for more information on this change. If all of your operations
40
+ Please see [#33](https://github.com/sitrox/rails_ops/issues/33) for more information
41
+ on this change. If all of your operations
27
42
  follow the standard naming conventions (e.g. `Operations::User::Update` for
28
43
  updating a model named `User`), no changes will be necessary. If you don't, you
29
44
  may need to manually specify a `param_key` when using nested model operations
data/README.md CHANGED
@@ -70,11 +70,11 @@ Requirements & Installation
70
70
 
71
71
  # Define the Operations module
72
72
  module Operations; end
73
-
73
+
74
74
  # Add the folder to the autoloader, but namespaced
75
75
  loader = Rails.autoloaders.main
76
76
  loader.push_dir(app_operations, namespace: Operations)
77
-
77
+
78
78
  # Add the folder to the watched directories (for re-loading in development)
79
79
  Rails.application.config.watchable_dirs.merge!({
80
80
  app_operations => [:rb]
@@ -1674,6 +1674,16 @@ flags:
1674
1674
 
1675
1675
  Or if you want to skip them all: `--only-operations`.
1676
1676
 
1677
+ If you want to skip a certain action, you can do so using the flags:
1678
+ * `--skip-index`
1679
+ * `--skip-show`
1680
+ * `--skip-create`
1681
+ * `--skip-update`
1682
+ * `--skip-destroy`
1683
+
1684
+ This will skip the creation of the respective route, controller action, view file and the operation itself.
1685
+ For `--skip-create`, the `new` action will also be skipped and for `--skip-update`, the `edit` action will be skipped respectively.
1686
+
1677
1687
  You can also add a module as a namespace, all generated files will be put in
1678
1688
  the proper subfolders and modules by using the `--module` option.
1679
1689
 
data/Rakefile CHANGED
@@ -24,6 +24,7 @@ task :gemspec do
24
24
  spec.add_development_dependency 'colorize'
25
25
  spec.add_development_dependency 'rubocop', '1.45.1'
26
26
  spec.add_development_dependency 'sprockets-rails'
27
+ spec.add_development_dependency 'simplecov'
27
28
  spec.add_dependency 'active_type', '>= 1.3.0'
28
29
  spec.add_dependency 'minitest'
29
30
  spec.add_dependency 'rails'
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.4.2
1
+ 1.4.4
@@ -1,12 +1,41 @@
1
1
  class OperationGenerator < Rails::Generators::NamedBase
2
2
  source_root File.expand_path('templates', __dir__)
3
3
 
4
+ class_option :skip_index, type: :boolean, desc: "Don't create the index route / view / controller action"
5
+ class_option :skip_show, type: :boolean, desc: "Don't create the show route / view / controller action and the load operation"
6
+ class_option :skip_create, type: :boolean, desc: "Don't create the new / create route / view / controller action and the create operation"
7
+ class_option :skip_update, type: :boolean, desc: "Don't create the edit / update route / view / controller action and the update operation"
8
+ class_option :skip_destroy, type: :boolean, desc: "Don't create the destroy route / view / controller action and the destroy operation"
4
9
  class_option :skip_controller, type: :boolean, desc: "Don't add a controller."
5
10
  class_option :skip_views, type: :boolean, desc: "Don't add the views."
6
11
  class_option :skip_routes, type: :boolean, desc: "Don't add routes to config/routes.rb."
7
12
  class_option :only_operations, type: :boolean, desc: 'Only add the operations. This is equal to specifying --skip-controller --skip-routes --skip-views'
8
13
  class_option :module, type: :string, desc: 'Add the operations in a module, e.g. "Admin" results in namespacing everything in the Admin module'
9
14
 
15
+ def excluded_actions
16
+ @excluded_actions = []
17
+
18
+ if options[:skip_index]
19
+ @excluded_actions += %i[index]
20
+ end
21
+
22
+ if options[:skip_show]
23
+ @excluded_actions += %i[show]
24
+ end
25
+
26
+ if options[:skip_create]
27
+ @excluded_actions += %i[new create]
28
+ end
29
+
30
+ if options[:skip_update]
31
+ @excluded_actions += %i[edit update]
32
+ end
33
+
34
+ if options[:skip_destroy]
35
+ @excluded_actions += %i[destroy]
36
+ end
37
+ end
38
+
10
39
  def add_operations
11
40
  @class_name = name.classify
12
41
  @underscored_name = @class_name.underscore
@@ -23,10 +52,18 @@ class OperationGenerator < Rails::Generators::NamedBase
23
52
 
24
53
  operations_path += @underscored_name.to_s
25
54
 
26
- template 'load.erb', "#{operations_path}/load.rb"
27
- template 'create.erb', "#{operations_path}/create.rb"
28
- template 'update.erb', "#{operations_path}/update.rb"
29
- template 'destroy.erb', "#{operations_path}/destroy.rb"
55
+ unless @excluded_actions.include?(:show)
56
+ template 'load.erb', "#{operations_path}/load.rb"
57
+ end
58
+ unless @excluded_actions.include?(:create)
59
+ template 'create.erb', "#{operations_path}/create.rb"
60
+ end
61
+ unless @excluded_actions.include?(:update)
62
+ template 'update.erb', "#{operations_path}/update.rb"
63
+ end
64
+ unless @excluded_actions.include?(:destroy)
65
+ template 'destroy.erb', "#{operations_path}/destroy.rb"
66
+ end
30
67
  end
31
68
 
32
69
  def add_controller
@@ -39,7 +76,7 @@ class OperationGenerator < Rails::Generators::NamedBase
39
76
  controller_file_path += "#{@underscored_pluralized_name}_controller.rb"
40
77
  @controller_name = "#{@class_name.pluralize}Controller"
41
78
 
42
- template 'controller.erb', controller_file_path
79
+ template 'controller_wrapper.erb', controller_file_path
43
80
  end
44
81
 
45
82
  def add_views
@@ -51,7 +88,13 @@ class OperationGenerator < Rails::Generators::NamedBase
51
88
  end
52
89
  views_folder += @underscored_pluralized_name.to_s
53
90
 
54
- %w[index show new edit].each do |view|
91
+ actions = %w[index show new edit]
92
+
93
+ @excluded_actions.each do |a|
94
+ actions.delete(a.to_s)
95
+ end
96
+
97
+ actions.each do |view|
55
98
  template 'view.erb', "#{views_folder}/#{view}.html.haml"
56
99
  end
57
100
  end
@@ -59,6 +102,10 @@ class OperationGenerator < Rails::Generators::NamedBase
59
102
  def add_routes
60
103
  return if options[:skip_routes] || options[:only_operations]
61
104
 
62
- route "resources :#{@underscored_pluralized_name}"
105
+ if @excluded_actions.empty?
106
+ route "resources :#{@underscored_pluralized_name}"
107
+ else
108
+ route "resources :#{@underscored_pluralized_name}, except: #{@excluded_actions}"
109
+ end
63
110
  end
64
111
  end
@@ -1,56 +1,67 @@
1
- <%
2
- controller_code = <<-RUBY
3
- class #{@controller_name} < ApplicationController
1
+ class <%=@controller_name%> < ApplicationController
2
+ <% first=true -%>
3
+ <% if !@excluded_actions&.include?(:index) -%>
4
+ <% first=false -%>
4
5
  def index; end
6
+ <% end -%>
7
+ <% if !@excluded_actions&.include?(:show) -%>
8
+ <% if first -%>
9
+ <% first=false -%>
10
+ <% else -%>
5
11
 
12
+ <% end -%>
6
13
  def show
7
- op Operations#{ "::#{@module_name}" if @module_name.present? }::#{@class_name}::Load
14
+ op Operations<%="::#{@module_name}" if @module_name.present?%>::<%=@class_name%>::Load
8
15
  end
16
+ <% end -%>
17
+ <% if !@excluded_actions&.include?(:create) -%>
18
+ <% if first -%>
19
+ <% first=false -%>
20
+ <% else -%>
9
21
 
22
+ <% end -%>
10
23
  def new
11
- op Operations#{ "::#{@module_name}" if @module_name.present? }::#{@class_name}::Create
24
+ op Operations<%="::#{@module_name}" if @module_name.present?%>::<%=@class_name%>::Create
12
25
  end
13
26
 
14
27
  def create
15
- if run Operations#{ "::#{@module_name}" if @module_name.present? }::#{@class_name}::Create
28
+ if run Operations<%="::#{@module_name}" if @module_name.present?%>::<%=@class_name%>::Create
16
29
  # handle successful case
17
30
  else
18
31
  # handle error case
19
32
  end
20
33
  end
34
+ <% end -%>
35
+ <% if !@excluded_actions&.include?(:update) -%>
36
+ <% if first -%>
37
+ <% first=false -%>
38
+ <% else -%>
21
39
 
40
+ <% end -%>
22
41
  def edit
23
- op Operations#{ "::#{@module_name}" if @module_name.present? }::#{@class_name}::Update
42
+ op Operations<%="::#{@module_name}" if @module_name.present?%>::<%=@class_name%>::Update
24
43
  end
25
44
 
26
45
  def update
27
- if run Operations#{ "::#{@module_name}" if @module_name.present? }::#{@class_name}::Update
46
+ if run Operations<%="::#{@module_name}" if @module_name.present?%>::<%=@class_name%>::Update
28
47
  # handle successful case
29
48
  else
30
49
  # handle error case
31
50
  end
32
51
  end
52
+ <% end -%>
53
+ <% if !@excluded_actions&.include?(:destroy) -%>
54
+ <% if first -%>
55
+ <% first=false -%>
56
+ <% else -%>
33
57
 
58
+ <% end -%>
34
59
  def destroy
35
- if run Operations#{ "::#{@module_name}" if @module_name.present? }::#{@class_name}::Destroy
60
+ if run Operations<%="::#{@module_name}" if @module_name.present?%>::<%=@class_name%>::Destroy
36
61
  # handle successful case
37
62
  else
38
63
  # handle error case
39
64
  end
40
65
  end
41
- end
42
- RUBY
43
- -%>
44
- <% if @module_name.present? -%>
45
- module <%= @module_name %>
46
- <% controller_code.split("\n").each do |line| -%>
47
- <% if line.blank? -%>
48
-
49
- <% else -%>
50
- <%= line %>
51
- <% end -%>
52
66
  <% end -%>
53
67
  end
54
- <% else -%>
55
- <%= controller_code -%>
56
- <% end -%>
@@ -0,0 +1,14 @@
1
+ <% controller_template = ERB.new(File.read(File.join(File.dirname(__FILE__), '/controller.erb')), trim_mode: '-').result(binding).strip -%>
2
+ <% if @module_name.present? -%>
3
+ module <%= @module_name %>
4
+ <% controller_template.split("\n").each do |line| -%>
5
+ <% if line.blank? -%>
6
+
7
+ <% else -%>
8
+ <%= line %>
9
+ <% end -%>
10
+ <% end -%>
11
+ end
12
+ <% else -%>
13
+ <%= controller_template %>
14
+ <% end -%>
@@ -10,7 +10,7 @@ class RailsOps::Hookup::DSLValidator
10
10
  def validate!
11
11
  # Check infinity loop
12
12
  if target_hooks.any? { |name, targets| recursion?(targets, name) }
13
- fail StandardError::SystemStackError.new, "Infinite loop detected in hooks configuration: #{inspect_trace}."
13
+ fail SystemStackError.new, "Infinite loop detected in hooks configuration: #{inspect_trace}."
14
14
  end
15
15
  end
16
16
 
@@ -23,7 +23,7 @@ class RailsOps::Hookup
23
23
  unless @config_loaded
24
24
  @config_loaded = true
25
25
 
26
- if File.exist?(CONFIG_PATH)
26
+ if File.exist?(Rails.root.join(CONFIG_PATH))
27
27
  load Rails.root.join(CONFIG_PATH)
28
28
  else
29
29
  Rails.logger.debug "RailsOps could not find hookup #{CONFIG_PATH}, using empty hookup configuration."
@@ -11,6 +11,8 @@ module RailsOps::Mixins::SubOps
11
11
  def sub_op(op, params = {})
12
12
  new_context = context.spawn(self)
13
13
  return op.new(new_context, params)
14
+ rescue *op.validation_errors => e
15
+ fail RailsOps::Exceptions::SubOpValidationFailed, e
14
16
  end
15
17
 
16
18
  # Operation-equivalent of controller method 'run!': Instantiates and runs the
@@ -149,7 +149,7 @@ class RailsOps::Operation
149
149
 
150
150
  # Fails with an exception if the operation has not been performed yet.
151
151
  def check_performed!
152
- fail 'Operation has not yet been perfomed.' unless performed?
152
+ fail 'Operation has not yet been performed.' unless performed?
153
153
  end
154
154
 
155
155
  protected
data/rails_ops.gemspec CHANGED
@@ -1,18 +1,18 @@
1
1
  # -*- encoding: utf-8 -*-
2
- # stub: rails_ops 1.4.2 ruby lib
2
+ # stub: rails_ops 1.4.4 ruby lib
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "rails_ops".freeze
6
- s.version = "1.4.2"
6
+ s.version = "1.4.4"
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-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/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-07-10"
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/controllers/group_controller.rb".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/ability.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/hookup.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/hookup_test.rb".freeze, "test/unit/rails_ops/mixins/controller_test.rb".freeze, "test/unit/rails_ops/mixins/model/deep_nesting_test.rb".freeze, "test/unit/rails_ops/mixins/model/marshalling_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/auth_test.rb".freeze, "test/unit/rails_ops/operation/model/create_test.rb".freeze, "test/unit/rails_ops/operation/model/destroy_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_lazy_auth_test.rb".freeze, "test/unit/rails_ops/operation_test.rb".freeze, "test/unit/rails_ops/profiler_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
- 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]
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/controllers/group_controller.rb".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/ability.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/hookup.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/hookup_test.rb".freeze, "test/unit/rails_ops/mixins/controller_test.rb".freeze, "test/unit/rails_ops/mixins/model/deep_nesting_test.rb".freeze, "test/unit/rails_ops/mixins/model/marshalling_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/auth_test.rb".freeze, "test/unit/rails_ops/operation/model/create_test.rb".freeze, "test/unit/rails_ops/operation/model/destroy_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_lazy_auth_test.rb".freeze, "test/unit/rails_ops/operation_test.rb".freeze, "test/unit/rails_ops/profiler_test.rb".freeze]
16
16
 
17
17
  s.specification_version = 4
18
18
 
@@ -25,6 +25,7 @@ Gem::Specification.new do |s|
25
25
  s.add_development_dependency(%q<colorize>.freeze, [">= 0"])
26
26
  s.add_development_dependency(%q<rubocop>.freeze, ["= 1.45.1"])
27
27
  s.add_development_dependency(%q<sprockets-rails>.freeze, [">= 0"])
28
+ s.add_development_dependency(%q<simplecov>.freeze, [">= 0"])
28
29
  s.add_runtime_dependency(%q<active_type>.freeze, [">= 1.3.0"])
29
30
  s.add_runtime_dependency(%q<minitest>.freeze, [">= 0"])
30
31
  s.add_runtime_dependency(%q<rails>.freeze, [">= 0"])
@@ -0,0 +1,28 @@
1
+ class GroupController < ApplicationController
2
+ attr_reader :current_user
3
+ skip_before_action :verify_authenticity_token
4
+
5
+ def initialize
6
+ super
7
+ @current_user = Class.new
8
+ end
9
+
10
+ def show
11
+ cls = Class.new(RailsOps::Operation::Model::Load) do
12
+ model Group
13
+ end
14
+
15
+ op cls, id: params[:id]
16
+ render json: model
17
+ end
18
+
19
+ def update
20
+ cls = Class.new(RailsOps::Operation::Model::Update) do
21
+ model Group
22
+ end
23
+
24
+ op cls, id: params[:id], group: {name: params[:name]}
25
+ run!
26
+ render json: model
27
+ end
28
+ end
@@ -0,0 +1,7 @@
1
+ class Ability
2
+ include CanCan::Ability
3
+
4
+ def initialize(_user)
5
+ can :manage, :all
6
+ end
7
+ end
@@ -1 +1,5 @@
1
- class Animal < ApplicationRecord; end
1
+ class Animal < ApplicationRecord
2
+ has_many :dogs
3
+ belongs_to :bird, optional: true
4
+ belongs_to :phoenix, optional: true, validate: false, autosave: false
5
+ end
@@ -1 +1,3 @@
1
- class Bird < Animal; end
1
+ class Bird < Animal
2
+ has_one :phoenix, inverse_of: :bird
3
+ end
@@ -1 +1,3 @@
1
- class Phoenix < Bird; end
1
+ class Phoenix < Bird
2
+ belongs_to :bird, optional: true, autosave: false, inverse_of: :phoenix, validate: true
3
+ end
@@ -51,4 +51,6 @@ Rails.application.configure do
51
51
  # Use an evented file watcher to asynchronously detect changes in source code,
52
52
  # routes, locales, etc. This feature depends on the listen gem.
53
53
  # config.file_watcher = ActiveSupport::EventedFileUpdateChecker
54
+
55
+ config.hosts = ['www.example.com']
54
56
  end
@@ -88,4 +88,6 @@ Rails.application.configure do
88
88
 
89
89
  # Do not dump schema after migrations.
90
90
  config.active_record.dump_schema_after_migration = false
91
+
92
+ config.hosts = ['www.example.com']
91
93
  end
@@ -0,0 +1,5 @@
1
+ RailsOps.hookup.draw do
2
+ run 'RailsOps::HookupTest::HookupTarget' do
3
+ on 'RailsOps::HookupTest::HookupStarter'
4
+ end
5
+ end
@@ -1,3 +1,4 @@
1
1
  Rails.application.routes.draw do
2
2
  # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
3
+ resources :group, only: [:show, :update]
3
4
  end
data/test/test_helper.rb CHANGED
@@ -1,3 +1,8 @@
1
+ require 'simplecov'
2
+ SimpleCov.start do
3
+ add_filter '/test/'
4
+ end
5
+
1
6
  require File.expand_path('../test/dummy/config/environment.rb', __dir__)
2
7
  # ActiveRecord::Migrator.migrations_paths = [File.expand_path("../../test/dummy/db/migrate", __FILE__)]
3
8
  require 'rails/test_help'