Class: Shaf::Generator::Controller
- Inherits:
-
Base
- Object
- Base
- Shaf::Generator::Controller
show all
- Defined in:
- lib/shaf/generator/controller.rb
Instance Attribute Summary
Attributes inherited from Base
#args
Instance Method Summary
collapse
Methods inherited from Base
identifier, inherited, #initialize, #read_template, #render, #template_dir, usage, #write_output
Instance Method Details
#add_link_to_root ⇒ Object
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
# File 'lib/shaf/generator/controller.rb', line 70
def add_link_to_root
file = "api/serializers/root_serializer.rb"
unless File.exist? file
puts "Warning: file '#{file}' does not exist. "\
"Not adding any link to the #{plural_name} collection"
end
added = false
content = []
File.readlines(file).reverse.each do |line|
if match = !added && line.match(/^(\s*)link /)
content.unshift link_content("#{match[1]}")
added = true
end
content.unshift(line)
end
File.open(file, 'w') { |f| f.puts content }
puts "Modified: #{file}"
end
|
#call ⇒ Object
8
9
10
11
12
13
14
15
16
17
|
# File 'lib/shaf/generator/controller.rb', line 8
def call
if name.empty?
raise Command::ArgumentError,
"Please provide a controller name when using the controller generator!"
end
create_controller
create_integration_spec
add_link_to_root
end
|
#create_controller ⇒ Object
47
48
49
50
|
# File 'lib/shaf/generator/controller.rb', line 47
def create_controller
content = render(template, opts)
write_output(target, content)
end
|
#create_integration_spec ⇒ Object
52
53
54
55
|
# File 'lib/shaf/generator/controller.rb', line 52
def create_integration_spec
content = render(spec_template, opts)
write_output(spec_target, content)
end
|
#link_content(indentation = "") ⇒ Object
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
# File 'lib/shaf/generator/controller.rb', line 89
def link_content(indentation = "")
"\n # Auto generated doc: \n # Link to the collection of \#{plural_name}. \n # Method: GET \n # Example:\n # ```\n # curl -H \"Accept: application/json\" \\\\\n # -H \"Authorization: abcdef\" \\\\\n # /\#{plural_name}/5\n #```\n link :\#{plural_name}, \#{plural_name}_uri\n EOS\nend\n".split("\n").map { |line| "#{indentation}#{line}" }
|
#name ⇒ Object
19
20
21
|
# File 'lib/shaf/generator/controller.rb', line 19
def name
args.first || ""
end
|
#opts ⇒ Object
57
58
59
60
61
62
63
64
65
66
67
68
|
# File 'lib/shaf/generator/controller.rb', line 57
def opts
{
name: name,
plural_name: plural_name,
serializer_class_name: "#{name.capitalize}Serializer",
model_class_name: name.capitalize,
controller_class_name: "#{plural_name.capitalize}Controller",
policy_class_name: "#{name.capitalize}Policy",
policy_file: "policies/#{name}_policy",
params: params
}
end
|
#params ⇒ Object
23
24
25
|
# File 'lib/shaf/generator/controller.rb', line 23
def params
args[1..-1].map { |param| param.split(':')}
end
|
#plural_name ⇒ Object
27
28
29
|
# File 'lib/shaf/generator/controller.rb', line 27
def plural_name
Utils::pluralize(name)
end
|
#spec_target ⇒ Object
43
44
45
|
# File 'lib/shaf/generator/controller.rb', line 43
def spec_target
"spec/integration/#{plural_name}_controller_spec.rb"
end
|
#spec_template ⇒ Object
35
36
37
|
# File 'lib/shaf/generator/controller.rb', line 35
def spec_template
'spec/integration_spec.rb'
end
|
#target ⇒ Object
39
40
41
|
# File 'lib/shaf/generator/controller.rb', line 39
def target
"api/controllers/#{plural_name}_controller.rb"
end
|
#template ⇒ Object
31
32
33
|
# File 'lib/shaf/generator/controller.rb', line 31
def template
'api/controller.rb'
end
|