rails_services 2.5.0 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +42 -20
- data/lib/generators/rails_services/USAGE +15 -9
- data/lib/generators/rails_services/create_generator.rb +15 -49
- data/lib/generators/rails_services/destroy_generator.rb +17 -17
- data/lib/generators/rails_services/form_generator.rb +36 -0
- data/lib/generators/rails_services/templates/base_form.rb.erb +30 -0
- data/lib/generators/rails_services/templates/base_form_spec.rb.erb +7 -0
- data/lib/generators/rails_services/templates/base_form_unit_test.rb.erb +7 -0
- data/lib/generators/rails_services/templates/{base_service.rb.erb → base_service_class.rb.erb} +0 -0
- data/lib/generators/rails_services/templates/base_service_new.rb.erb +14 -11
- data/lib/generators/rails_services/templates/base_service_unit_test.rb.erb +1 -1
- data/lib/rails_services/fileable.rb +37 -0
- data/lib/rails_services/nameable.rb +28 -0
- data/lib/rails_services/version.rb +1 -1
- data/test/lib/generators/rails_services/create_generator_test.rb +6 -10
- data/test/lib/generators/rails_services/destroy_generator_test.rb +5 -4
- data/test/lib/generators/rails_services/form_generator_test.rb +23 -0
- data/test/test_helper.rb +1 -0
- metadata +16 -9
- data/lib/generators/rails_services/templates/base_service_old.rb.erb +0 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3fc4964ed8a04bba20c8098d333195f81bfbf4f842ac09db9bac7113eca4f4c2
|
4
|
+
data.tar.gz: d0bc860c1bee886dd923ef379a728f8eaf7ba8c918092cc5026f6cc1a42d660f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c8c3fa58a147354c9f29b2a08192b0b20dc03090029c7d1f524db94cd0613a2d7e11e31badd6733f4451c840d3a0112766bfd5182a0a8fea4a551e4112ccdb39
|
7
|
+
data.tar.gz: a0b6f429baf0ef7cccbbbf3f31da12d1518e7b041d76276a6edbb25e4d4960d020691e15d6ada17cbf0b6f28eadac44c3cc8cae7da3068242dcef5f5a49a0ad0
|
data/README.md
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
[](https://codeclimate.com/github/imageaid/rails_service_generator)
|
5
5
|
[](http://badge.fury.io/rb/rails_services)
|
6
6
|
|
7
|
-
A
|
7
|
+
A simple gem for Rails that adds a generator for easily creating a service class and/or form object and its accompanying spec or test unit file.
|
8
8
|
|
9
9
|
## Requirements
|
10
10
|
|
@@ -28,36 +28,46 @@ Or install it yourself as:
|
|
28
28
|
|
29
29
|
Examples:
|
30
30
|
|
31
|
-
$ rails generate rails_services:create Service Model|Controller Sub-folder [opt]
|
31
|
+
$ rails generate rails_services:create Service Model|Controller --sub_folder Sub-folder [opt]
|
32
32
|
|
33
|
-
$ rails generate rails_services:destroy Service Model|Controller Sub-folder [opt]
|
33
|
+
$ rails generate rails_services:destroy Service Model|Controller --sub_folder Sub-folder [opt]
|
34
34
|
|
35
|
-
|
35
|
+
$ rails generate rails_services:form Form Model|Controller --sub_folder Sub-folder [opt] --accessors name email [opt]
|
36
|
+
|
37
|
+
## CHANGES AND NOTES
|
38
|
+
### Notes: Sub-folders
|
36
39
|
Sub-folders are optional but, at this time, you may only use one sub-folder. I generally use the sub-folders when I have a naturally grouped set of services.
|
37
40
|
|
38
|
-
###
|
39
|
-
|
40
|
-
|
41
|
-
|
41
|
+
### Changes: new argument structure for the command line
|
42
|
+
Previous versions of the gem used plain old arguments to create or destroy the appropriate files. Over time, this became
|
43
|
+
more unwieldy than imagined. From version 3.0.0 forward, there are only two arguments: `object_name` and `parent_name`.
|
44
|
+
|
45
|
+
If you would like to add a sub-folder to the service or form, you can now provide the `class_option` for it:
|
46
|
+
`--sub_folder NAME_OF_FOLDER`. Similarly, for the form generator, you can pass in an array of `attr_accessors` with
|
47
|
+
the following: `--accessors accessor_1_name accessor_2_name ...`.
|
42
48
|
|
43
|
-
|
44
|
-
|
45
|
-
|
49
|
+
### Changes: Instance Argument REMOVED
|
50
|
+
An instance argument was added in version 2.0.0. While the version 2.x line allowed users to choose between the old and new style,
|
51
|
+
(new = service clases inherited from a `BaseService` class and instantiated the service), the version 3.x line removes this option. BE AWARE :).
|
46
52
|
|
47
53
|
## Upgrading
|
48
|
-
|
49
|
-
|
50
|
-
|
54
|
+
There are two primary changes in version 3:
|
55
|
+
|
56
|
+
First, all services now include the `BaseService` class and methods in the services are,
|
57
|
+
by default, instance methods rather than class methods.
|
51
58
|
|
52
|
-
|
53
|
-
|
59
|
+
Second, the gem now allows you to generate a `Form` object/model.
|
60
|
+
|
61
|
+
**Converting Old Service Classes** - Should you want to update your older/previously built services with this approach,
|
62
|
+
you only need to do the following:
|
54
63
|
|
55
64
|
# include the base service in your class
|
56
65
|
class ClassName
|
57
66
|
include BaseService
|
58
67
|
|
59
|
-
# Then ... add an initialize method and
|
60
|
-
|
68
|
+
# Then ... optionally, add an initialize method and
|
69
|
+
# change the method signatures, simply removing self. from the definition(s)
|
70
|
+
def self.call
|
61
71
|
# ...
|
62
72
|
end
|
63
73
|
# becomes
|
@@ -66,14 +76,26 @@ the following:
|
|
66
76
|
end
|
67
77
|
# and so on for other, similarly defined methods
|
68
78
|
|
69
|
-
## Result
|
79
|
+
## Generator Result (create service and create form)
|
70
80
|
|
71
|
-
Two files are created (spec or test based on your `test_framework`)
|
81
|
+
Two files are created (spec or test based on your `test_framework`).
|
82
|
+
|
83
|
+
For services:
|
72
84
|
|
73
85
|
+ app/services/model|controller/[sub-folder]/thing.rb
|
74
86
|
+ spec/services/model|controller/[sub-folder]/thing_spec.rb
|
75
87
|
+ test/services/model|controller/[sub-folder]/thing_test.rb
|
76
88
|
|
89
|
+
For forms:
|
90
|
+
|
91
|
+
+ app/forms/model|controller/[sub-folder]/thing_form.rb
|
92
|
+
+ spec/forms/model|controller/[sub-folder]/thing_form_spec.rb
|
93
|
+
+ test/forms/model|controller/[sub-folder]/thing_form_test.rb
|
94
|
+
|
95
|
+
## Generator Result (destroy service)
|
96
|
+
|
97
|
+
Pretty simple here ... it just removes the files it created
|
98
|
+
|
77
99
|
## Contributing
|
78
100
|
|
79
101
|
1. Fork it ( https://github.com/imageaid/rails_services/fork )
|
@@ -1,27 +1,33 @@
|
|
1
1
|
Description:
|
2
2
|
Creates a service class and accompanying spec/test unit file
|
3
3
|
Destroys a service class and accompanying spec/test unit file
|
4
|
+
Creates a form object and accompanying spec/test unit file
|
4
5
|
|
5
|
-
Example:
|
6
|
-
rails generate rails_services:
|
6
|
+
Service Example:
|
7
|
+
rails generate rails_services:create Thing Model|Controller -- sub_folder Sub-folder [opt]]
|
7
8
|
|
8
|
-
This will
|
9
|
+
This will add:
|
9
10
|
app/services/model|controller/[sub-folder]/thing.rb
|
10
11
|
# either
|
11
12
|
spec/services/model|controller/[sub-folder]/thing_spec.rb
|
12
13
|
# or
|
13
14
|
test/services/model|controller/[sub-folder]/thing_test.rb
|
14
15
|
|
15
|
-
rails generate rails_services:
|
16
|
+
rails generate rails_services:destroy Thing Model|Controller -- sub_folder Sub-folder [opt]]
|
16
17
|
|
17
|
-
This will
|
18
|
+
This will remove:
|
18
19
|
app/services/model|controller/[sub-folder]/thing.rb
|
19
20
|
# either
|
20
21
|
spec/services/model|controller/[sub-folder]/thing_spec.rb
|
21
22
|
# or
|
22
23
|
test/services/model|controller/[sub-folder]/thing_test.rb
|
23
24
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
25
|
+
Form Example:
|
26
|
+
rails generate rails_services:form Thing Model|Controller -- sub_folder Sub-folder [opt] --accessors name email [opt]
|
27
|
+
|
28
|
+
This will add:
|
29
|
+
app/forms/[parent-folder]/[sub-folder]/thing_form.rb
|
30
|
+
# either
|
31
|
+
spec/forms/[parent-folder]/[sub-folder]/thing_form_spec.rb
|
32
|
+
# or
|
33
|
+
test/forms/[parent-folder]/[sub-folder]/thing_form_test.rb
|
@@ -1,74 +1,40 @@
|
|
1
|
+
require_relative '../../../lib/rails_services/nameable'
|
2
|
+
require_relative '../../../lib/rails_services/fileable'
|
3
|
+
|
1
4
|
module RailsServices
|
2
5
|
class Generators
|
3
6
|
##
|
4
7
|
# creates a service class
|
5
8
|
class CreateGenerator < Rails::Generators::Base
|
6
9
|
source_root File.expand_path('templates', __dir__)
|
7
|
-
|
10
|
+
|
11
|
+
include Nameable
|
12
|
+
include Fileable
|
13
|
+
|
14
|
+
argument :object_name, type: :string
|
8
15
|
argument :parent_name, type: :string
|
9
|
-
|
10
|
-
|
16
|
+
|
17
|
+
class_option :sub_folder, type: :string, default: ''
|
11
18
|
|
12
19
|
def create_service
|
13
|
-
|
14
|
-
|
15
|
-
template 'base_service_new.rb.erb', "app/services/#{service_directory}/#{service_file}"
|
16
|
-
else
|
17
|
-
template 'base_service_old.rb.erb', "app/services/#{service_directory}/#{service_file}"
|
18
|
-
end
|
20
|
+
copy_base_service_class
|
21
|
+
template 'base_service_new.rb.erb', "app/services/#{object_directory}/#{service_object_file}"
|
19
22
|
create_test
|
20
23
|
end
|
21
24
|
|
22
25
|
private
|
23
26
|
|
24
27
|
def copy_base_service_class
|
25
|
-
template('
|
28
|
+
template('base_service_class.rb.erb', 'app/services/base_service.rb') unless File.exist?('app/services/base_service.rb')
|
26
29
|
end
|
27
30
|
|
28
31
|
def create_test
|
29
32
|
if File.exist?('spec/spec_helper.rb')
|
30
|
-
template 'base_service_spec.rb.erb', "spec/services/#{
|
33
|
+
template 'base_service_spec.rb.erb', "spec/services/#{object_directory}/#{service_spec_file}"
|
31
34
|
else
|
32
|
-
template 'base_service_unit_test.rb.erb', "test/services/#{
|
35
|
+
template 'base_service_unit_test.rb.erb', "test/services/#{object_directory}/#{service_unit_file}"
|
33
36
|
end
|
34
37
|
end
|
35
|
-
|
36
|
-
def service_directory
|
37
|
-
file_path = parent_name.pluralize.underscore.to_s
|
38
|
-
file_path += "/#{sub_folder.underscore}" if sub_folder.present?
|
39
|
-
file_path
|
40
|
-
end
|
41
|
-
|
42
|
-
def service_file
|
43
|
-
"#{service_name.underscore}.rb"
|
44
|
-
end
|
45
|
-
|
46
|
-
def spec_file
|
47
|
-
"#{service_name.underscore}_spec.rb"
|
48
|
-
end
|
49
|
-
|
50
|
-
def unit_file
|
51
|
-
"#{service_name.underscore}_test.rb"
|
52
|
-
end
|
53
|
-
|
54
|
-
def qualified_name
|
55
|
-
name = "#{parent_name.pluralize.camelize}::"
|
56
|
-
name += "#{sub_folder.camelize}::" if sub_folder.present?
|
57
|
-
name += service_name.camelize.to_s
|
58
|
-
name
|
59
|
-
end
|
60
|
-
|
61
|
-
def module_name
|
62
|
-
parent_name.pluralize.camelize.to_s
|
63
|
-
end
|
64
|
-
|
65
|
-
def subfolder_name
|
66
|
-
sub_folder.try(:camelize).to_s
|
67
|
-
end
|
68
|
-
|
69
|
-
def class_name
|
70
|
-
service_name.camelize.to_s
|
71
|
-
end
|
72
38
|
end
|
73
39
|
end
|
74
40
|
end
|
@@ -1,24 +1,32 @@
|
|
1
|
+
require_relative '../../../lib/rails_services/nameable'
|
2
|
+
require_relative '../../../lib/rails_services/fileable'
|
3
|
+
|
1
4
|
module RailsServices
|
2
5
|
class Generators
|
3
6
|
##
|
4
7
|
# destroys a service class
|
5
8
|
class DestroyGenerator < Rails::Generators::Base
|
6
|
-
|
9
|
+
include Nameable
|
10
|
+
include Fileable
|
11
|
+
|
12
|
+
argument :object_name, type: :string
|
7
13
|
argument :parent_name, type: :string
|
8
|
-
|
14
|
+
|
15
|
+
class_option :sub_folder, type: :string, default: ''
|
9
16
|
|
10
17
|
def destroy_service
|
11
|
-
remove_file "app/services/#{
|
12
|
-
remove_file "spec/services/#{
|
18
|
+
remove_file "app/services/#{full_object_directory}/#{service_object_file}"
|
19
|
+
remove_file "spec/services/#{full_object_directory}/#{service_spec_file}"
|
20
|
+
remove_file "test/services/#{full_object_directory}/#{service_unit_file}"
|
13
21
|
|
14
|
-
manage_containing_directories('app', 'spec')
|
22
|
+
manage_containing_directories('app', 'spec', 'test')
|
15
23
|
end
|
16
24
|
|
17
25
|
private
|
18
26
|
|
19
|
-
def
|
27
|
+
def full_object_directory
|
20
28
|
file_path = service_parent_directory.to_s
|
21
|
-
file_path += "/#{sub_folder.underscore}" if sub_folder.present?
|
29
|
+
file_path += "/#{options['sub_folder'].underscore}" if options['sub_folder'].present?
|
22
30
|
file_path
|
23
31
|
end
|
24
32
|
|
@@ -26,23 +34,15 @@ module RailsServices
|
|
26
34
|
parent_name.pluralize.underscore.to_s
|
27
35
|
end
|
28
36
|
|
29
|
-
def service_file
|
30
|
-
"#{service_name.underscore}.rb"
|
31
|
-
end
|
32
|
-
|
33
|
-
def spec_file
|
34
|
-
"#{service_name.underscore}_spec.rb"
|
35
|
-
end
|
36
|
-
|
37
37
|
def manage_containing_directories(*directory_types)
|
38
38
|
directory_types.each do |directory_type|
|
39
|
-
remove_dir("#{directory_type}/services/#{
|
39
|
+
remove_dir("#{directory_type}/services/#{full_object_directory}") if directory_empty?(directory_type)
|
40
40
|
remove_dir("#{directory_type}/services/#{service_parent_directory}") if parent_directory_empty?(directory_type)
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
44
44
|
def directory_empty?(directory_type)
|
45
|
-
Dir["#{Rails.root}/#{directory_type}/services/#{
|
45
|
+
Dir["#{Rails.root}/#{directory_type}/services/#{full_object_directory}/*"].empty?
|
46
46
|
end
|
47
47
|
|
48
48
|
def parent_directory_empty?(directory_type)
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require_relative '../../../lib/rails_services/nameable'
|
2
|
+
require_relative '../../../lib/rails_services/fileable'
|
3
|
+
|
4
|
+
module RailsServices
|
5
|
+
class Generators
|
6
|
+
##
|
7
|
+
# generates a form object
|
8
|
+
class FormGenerator < Rails::Generators::Base
|
9
|
+
source_root File.expand_path('templates', __dir__)
|
10
|
+
|
11
|
+
include Nameable
|
12
|
+
include Fileable
|
13
|
+
|
14
|
+
argument :object_name, type: :string, required: true
|
15
|
+
argument :parent_name, type: :string, required: true
|
16
|
+
|
17
|
+
class_option :sub_folder, type: :string, default: ''
|
18
|
+
class_option :accessors, type: :array, default: []
|
19
|
+
|
20
|
+
def create_form
|
21
|
+
template 'base_form.rb.erb', "app/forms/#{object_directory}/#{form_object_file}"
|
22
|
+
create_test
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
def create_test
|
28
|
+
if File.exist?('spec/spec_helper.rb')
|
29
|
+
template 'base_form_spec.rb.erb', "spec/forms/#{object_directory}/#{form_spec_file}"
|
30
|
+
else
|
31
|
+
template 'base_form_unit_test.rb.erb', "test/forms/#{object_directory}/#{form_unit_file}"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
<%= '# Generated form object' %>
|
2
|
+
<%= "module #{module_name}" %>
|
3
|
+
<% if subfolder_name.present? -%>
|
4
|
+
<%= "module #{subfolder_name}" %>
|
5
|
+
<%= '##' %>
|
6
|
+
<%= "# #{qualified_name} Form Object" %>
|
7
|
+
<%= "class #{form_class_name}" %>
|
8
|
+
<%= 'include ActiveModel::Model' %>
|
9
|
+
|
10
|
+
<% if options['accessors'].present? -%>
|
11
|
+
<%= "attr_accessor :#{options['accessors'].join(', :')}" %>
|
12
|
+
|
13
|
+
<% end -%>
|
14
|
+
<%= 'def save;' %> <%= 'end' %>
|
15
|
+
<%= 'end' %>
|
16
|
+
<%= 'end' %>
|
17
|
+
<% else -%>
|
18
|
+
<%= '##' %>
|
19
|
+
<%= "# #{qualified_name} Form Object" %>
|
20
|
+
<%= "class #{form_class_name}" %>
|
21
|
+
<%= 'include ActiveModel::Model' %>
|
22
|
+
|
23
|
+
<% if options['accessors'].present? -%>
|
24
|
+
<%= "attr_accessor :#{options['accessors'].join(', :')}" %>
|
25
|
+
|
26
|
+
<% end -%>
|
27
|
+
<%= 'def save;' %> <%= 'end' %>
|
28
|
+
<%= 'end' %>
|
29
|
+
<% end -%>
|
30
|
+
<%= 'end' %>
|
data/lib/generators/rails_services/templates/{base_service.rb.erb → base_service_class.rb.erb}
RENAMED
File without changes
|
@@ -1,25 +1,28 @@
|
|
1
|
+
<%= '# Generated service object' %>
|
1
2
|
<%= "module #{module_name}" %>
|
2
3
|
<% if subfolder_name.present? -%>
|
3
4
|
<%= "module #{subfolder_name}" %>
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
<% if subfolder_name.present? -%>
|
8
|
-
<%= "class #{class_name}" %>
|
5
|
+
<%= '##' %>
|
6
|
+
<%= "# #{qualified_name} Service Class" %>
|
7
|
+
<%= "class #{service_class_name}" %>
|
9
8
|
<%= 'include BaseService' %>
|
10
|
-
|
9
|
+
|
10
|
+
<%= "# SAMPLE USAGE: #{qualified_name}.new(*args).call" %>
|
11
11
|
<%= 'def initialize(_args);' %> <%= 'end' %>
|
12
|
+
|
12
13
|
<%= 'def call;' %> <%= 'end' %>
|
13
14
|
<%= 'end' %>
|
15
|
+
<%= 'end' %>
|
14
16
|
<% else -%>
|
15
|
-
<%=
|
17
|
+
<%= '##' %>
|
18
|
+
<%= "# #{qualified_name} Service Class" %>
|
19
|
+
<%= "class #{service_class_name}" %>
|
16
20
|
<%= 'include BaseService' %>
|
17
|
-
|
21
|
+
|
22
|
+
<%= "# SAMPLE USAGE: #{qualified_name}.new(*args).call" %>
|
18
23
|
<%= 'def initialize(_args);' %> <%= 'end' %>
|
24
|
+
|
19
25
|
<%= 'def call;' %> <%= 'end' %>
|
20
26
|
<%= 'end' %>
|
21
27
|
<% end -%>
|
22
|
-
<% if subfolder_name.present? -%>
|
23
|
-
<%= 'end' %>
|
24
|
-
<% end -%>
|
25
28
|
<%= 'end' %>
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<%= "require 'test_helper'" %>
|
2
2
|
|
3
|
-
<%= "class #{
|
3
|
+
<%= "class #{service_class_name}Test < ActiveSupport::TestCase" %>
|
4
4
|
<%= 'def test_some_stuff' %>
|
5
5
|
<%= "assert (1 == 2), 'You best test yourself before you wreck yourself!'" %>
|
6
6
|
<%= 'end' %>
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module RailsServices
|
2
|
+
##
|
3
|
+
# handles creating files and directories
|
4
|
+
module Fileable
|
5
|
+
def object_directory
|
6
|
+
file_path = parent_name.pluralize.underscore.to_s
|
7
|
+
file_path += "/#{options['sub_folder'].underscore}" if options['sub_folder'].present?
|
8
|
+
file_path
|
9
|
+
end
|
10
|
+
|
11
|
+
# services
|
12
|
+
def service_object_file
|
13
|
+
"#{object_name.underscore}.rb"
|
14
|
+
end
|
15
|
+
|
16
|
+
def service_spec_file
|
17
|
+
"#{object_name.underscore}_spec.rb"
|
18
|
+
end
|
19
|
+
|
20
|
+
def service_unit_file
|
21
|
+
"#{object_name.underscore}_test.rb"
|
22
|
+
end
|
23
|
+
|
24
|
+
# forms
|
25
|
+
def form_object_file
|
26
|
+
"#{object_name.underscore}_form.rb"
|
27
|
+
end
|
28
|
+
|
29
|
+
def form_spec_file
|
30
|
+
"#{object_name.underscore}_form_spec.rb"
|
31
|
+
end
|
32
|
+
|
33
|
+
def form_unit_file
|
34
|
+
"#{object_name.underscore}_form_test.rb"
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module RailsServices
|
2
|
+
##
|
3
|
+
# commonly used naming conventions
|
4
|
+
module Nameable
|
5
|
+
def qualified_name
|
6
|
+
name = "#{parent_name.pluralize.camelize}::"
|
7
|
+
name += "#{options['sub_folder'].camelize}::" if options['sub_folder'].present?
|
8
|
+
name += object_name.camelize.to_s
|
9
|
+
name
|
10
|
+
end
|
11
|
+
|
12
|
+
def module_name
|
13
|
+
parent_name.pluralize.camelize.to_s
|
14
|
+
end
|
15
|
+
|
16
|
+
def subfolder_name
|
17
|
+
options['sub_folder'].try(:camelize).to_s
|
18
|
+
end
|
19
|
+
|
20
|
+
def service_class_name
|
21
|
+
object_name.camelize.to_s
|
22
|
+
end
|
23
|
+
|
24
|
+
def form_class_name
|
25
|
+
"#{object_name.camelize.to_s}Form"
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -1,23 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require_relative '../../../../test/test_helper'
|
2
4
|
|
3
5
|
class CreateGeneratorTest < Rails::Generators::TestCase
|
4
6
|
tests ::RailsServices::Generators::CreateGenerator
|
5
7
|
|
6
|
-
destination File.expand_path('
|
8
|
+
destination File.expand_path('../tmp', __dir__)
|
7
9
|
|
8
10
|
setup do
|
9
11
|
prepare_destination
|
10
12
|
end
|
11
13
|
|
12
|
-
test 'generates
|
13
|
-
run_generator(%w
|
14
|
-
assert_file 'app/services/parent_models/sub_folder/test_service.rb'
|
15
|
-
end
|
16
|
-
|
17
|
-
test 'generates a new style service class' do
|
18
|
-
run_generator(%w(TestBaseService ParentModel SubFolder --style new))
|
14
|
+
test 'generates a service class' do
|
15
|
+
run_generator(%w[TestBaseService ParentModel --sub_folder SubFolder])
|
19
16
|
assert_file 'app/services/base_service.rb'
|
20
17
|
assert_file 'app/services/parent_models/sub_folder/test_base_service.rb'
|
21
18
|
end
|
22
|
-
|
23
|
-
end
|
19
|
+
end
|
@@ -1,17 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require_relative '../../../../test/test_helper'
|
2
4
|
|
3
5
|
class DestroyGeneratorTest < Rails::Generators::TestCase
|
4
6
|
tests ::RailsServices::Generators::DestroyGenerator
|
5
7
|
|
6
|
-
destination File.expand_path('
|
8
|
+
destination File.expand_path('../tmp', __dir__)
|
7
9
|
|
8
10
|
setup do
|
9
11
|
prepare_destination
|
10
|
-
run_generator(%w
|
12
|
+
run_generator(%w[TestService ParentModel --sub_folder SubFolder])
|
11
13
|
end
|
12
14
|
|
13
15
|
test 'removes an initializer' do
|
14
16
|
assert_no_file 'app/services/parent_models/sub_folder/test_service.rb'
|
15
17
|
end
|
16
|
-
|
17
|
-
end
|
18
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative '../../../../test/test_helper'
|
4
|
+
|
5
|
+
class FormGeneratorTest < Rails::Generators::TestCase
|
6
|
+
tests ::RailsServices::Generators::FormGenerator
|
7
|
+
|
8
|
+
destination File.expand_path('../tmp', __dir__)
|
9
|
+
|
10
|
+
setup do
|
11
|
+
prepare_destination
|
12
|
+
end
|
13
|
+
|
14
|
+
test 'generates a base form object' do
|
15
|
+
run_generator(%w[TestFormObject Parent --accessors first_name last_name])
|
16
|
+
assert_file 'app/forms/parents/test_form_object_form.rb'
|
17
|
+
end
|
18
|
+
|
19
|
+
test 'generates a subfoldered form object' do
|
20
|
+
run_generator(%w[TestFormObject Parent --sub_folder Child --accessors first_name last_name])
|
21
|
+
assert_file 'app/forms/parents/child/test_form_object_form.rb'
|
22
|
+
end
|
23
|
+
end
|
data/test/test_helper.rb
CHANGED
@@ -5,6 +5,7 @@ require 'rails/generators'
|
|
5
5
|
# require 'rails_service_generator'
|
6
6
|
require_relative '../lib/generators/rails_services/destroy_generator'
|
7
7
|
require_relative '../lib/generators/rails_services/create_generator'
|
8
|
+
require_relative '../lib/generators/rails_services/form_generator'
|
8
9
|
require 'shellwords'
|
9
10
|
require 'minitest/autorun'
|
10
11
|
require 'minitest/reporters'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails_services
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Craig Kaminsky
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-04-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -72,8 +72,8 @@ dependencies:
|
|
72
72
|
- - ">="
|
73
73
|
- !ruby/object:Gem::Version
|
74
74
|
version: '0'
|
75
|
-
description: Speed up development when using
|
76
|
-
classes and their attending test
|
75
|
+
description: Speed up development when using Service layers and Form objects by easily
|
76
|
+
creating those classes and their attending test file.
|
77
77
|
email:
|
78
78
|
- imageaid@gmail.com
|
79
79
|
executables: []
|
@@ -86,15 +86,21 @@ files:
|
|
86
86
|
- lib/generators/rails_services/USAGE
|
87
87
|
- lib/generators/rails_services/create_generator.rb
|
88
88
|
- lib/generators/rails_services/destroy_generator.rb
|
89
|
-
- lib/generators/rails_services/
|
89
|
+
- lib/generators/rails_services/form_generator.rb
|
90
|
+
- lib/generators/rails_services/templates/base_form.rb.erb
|
91
|
+
- lib/generators/rails_services/templates/base_form_spec.rb.erb
|
92
|
+
- lib/generators/rails_services/templates/base_form_unit_test.rb.erb
|
93
|
+
- lib/generators/rails_services/templates/base_service_class.rb.erb
|
90
94
|
- lib/generators/rails_services/templates/base_service_new.rb.erb
|
91
|
-
- lib/generators/rails_services/templates/base_service_old.rb.erb
|
92
95
|
- lib/generators/rails_services/templates/base_service_spec.rb.erb
|
93
96
|
- lib/generators/rails_services/templates/base_service_unit_test.rb.erb
|
94
97
|
- lib/rails_services.rb
|
98
|
+
- lib/rails_services/fileable.rb
|
99
|
+
- lib/rails_services/nameable.rb
|
95
100
|
- lib/rails_services/version.rb
|
96
101
|
- test/lib/generators/rails_services/create_generator_test.rb
|
97
102
|
- test/lib/generators/rails_services/destroy_generator_test.rb
|
103
|
+
- test/lib/generators/rails_services/form_generator_test.rb
|
98
104
|
- test/test_helper.rb
|
99
105
|
homepage: https://github.com/imageaid/rails_service_generator
|
100
106
|
licenses:
|
@@ -115,12 +121,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
115
121
|
- !ruby/object:Gem::Version
|
116
122
|
version: '0'
|
117
123
|
requirements: []
|
118
|
-
|
119
|
-
rubygems_version: 2.7.6
|
124
|
+
rubygems_version: 3.0.3
|
120
125
|
signing_key:
|
121
126
|
specification_version: 4
|
122
|
-
summary: A Ruby gem that adds a rails generator for creating service classes
|
127
|
+
summary: A Ruby gem that adds a rails generator for creating service classes and form
|
128
|
+
object.
|
123
129
|
test_files:
|
124
130
|
- test/lib/generators/rails_services/create_generator_test.rb
|
125
131
|
- test/lib/generators/rails_services/destroy_generator_test.rb
|
132
|
+
- test/lib/generators/rails_services/form_generator_test.rb
|
126
133
|
- test/test_helper.rb
|
@@ -1,19 +0,0 @@
|
|
1
|
-
<%= "module #{module_name}" %>
|
2
|
-
<% if subfolder_name.present? %><%= "module #{subfolder_name}" %><% end %>
|
3
|
-
<%= '##' %>
|
4
|
-
<%= "# #{qualified_name} Service Class" %>
|
5
|
-
<% if subfolder_name.present? %>
|
6
|
-
<%= "class #{class_name}" %>
|
7
|
-
<%= "# SAMPLE USAGE: #{qualified_name}.call(*args)" %>
|
8
|
-
<%= 'def self.call' %>
|
9
|
-
<%= 'end' %>
|
10
|
-
<%= 'end' %>
|
11
|
-
<% else %>
|
12
|
-
<%= "class #{class_name}" %>
|
13
|
-
<%= "# SAMPLE USAGE: #{qualified_name}.call(*args)" %>
|
14
|
-
<%= 'def self.call' %>
|
15
|
-
<%= 'end' %>
|
16
|
-
<%= 'end' %>
|
17
|
-
<% end %>
|
18
|
-
<% if subfolder_name.present? %><%= 'end' %><% end %>
|
19
|
-
<%= 'end' %>
|