rails_services 2.5.0 → 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
[![Test Coverage](https://codeclimate.com/github/imageaid/rails_service_generator/coverage.png)](https://codeclimate.com/github/imageaid/rails_service_generator)
|
5
5
|
[![Gem Version](https://badge.fury.io/rb/rails_services.svg)](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' %>
|