Class: RESTRack::Generator
Constant Summary collapse
- TEMPLATE =
{ :service => 'loader.rb.erb', :rackup => 'config.ru.erb', :constants => 'constants.yaml.erb', :controller => 'controller.rb.erb', :descendant_controller => 'descendant_controller.rb.erb', :hooks => 'hooks.rb.erb', :gemfile => 'Gemfile.erb' }
Class Method Summary collapse
-
.generate_asynchronous_service(name) ⇒ Object
Generate a new RESTRack service that uses EventMachine.
-
.generate_controller(name) ⇒ Object
Generate controller file.
-
.generate_descendant_controller(name, parent) ⇒ Object
Generate controller file the descends from specified parent, to enable grouping of controller types and/or overarching functionality.
-
.generate_service(name) ⇒ Object
The guts for generating a new RESTRack service.
-
.generate_synchronous_service(name) ⇒ Object
Generate a new RESTRack service.
Class Method Details
permalink .generate_asynchronous_service(name) ⇒ Object
Generate a new RESTRack service that uses EventMachine. This can only be used with web servers that use or support EventMachine (Thin, Rainbows).
80 81 82 83 84 |
# File 'lib/restrack/generator.rb', line 80 def generate_asynchronous_service(name) @async = true generate_service(name) @async = nil end |
permalink .generate_controller(name) ⇒ Object
Generate controller file
22 23 24 25 26 27 28 |
# File 'lib/restrack/generator.rb', line 22 def generate_controller(name) template = get_template_for( :controller ) resultant_string = template.result( get_binding_for_controller( name ) ) File.open("#{base_dir}/controllers/#{name}_controller.rb", 'w') {|f| f.puts resultant_string } # Generate view folder for controller FileUtils.makedirs("#{base_dir}/views/#{name}") end |
permalink .generate_descendant_controller(name, parent) ⇒ Object
Generate controller file the descends from specified parent, to enable grouping of controller types and/or overarching functionality.
32 33 34 35 36 37 38 |
# File 'lib/restrack/generator.rb', line 32 def generate_descendant_controller(name, parent) template = get_template_for( :descendant_controller ) resultant_string = template.result( get_binding_for_descendant_controller( name, parent ) ) File.open("#{base_dir}/controllers/#{name}_controller.rb", 'w') {|f| f.puts resultant_string } # Generate view folder for controller FileUtils.makedirs("#{base_dir}/views/#{name}") end |
permalink .generate_service(name) ⇒ Object
The guts for generating a new RESTRack service. The loader.rb template will create a RESTRack::WebService or RESTRack::AsyncWebService based on the value of @async.
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/restrack/generator.rb', line 43 def generate_service(name) FileUtils.makedirs("#{name}/config") FileUtils.makedirs("#{name}/controllers") FileUtils.makedirs("#{name}/models") FileUtils.makedirs("#{name}/test") FileUtils.makedirs("#{name}/views") template = get_template_for( :service ) resultant_string = template.result( get_binding_for_service( name ) ) File.open("#{name}/loader.rb", 'w') {|f| f.puts resultant_string } template = get_template_for( :rackup ) resultant_string = template.result( get_binding_for_service( name ) ) File.open("#{name}/config.ru", 'w') {|f| f.puts resultant_string } template = get_template_for( :constants ) resultant_string = template.result( get_binding_for_service( name ) ) File.open("#{name}/config/constants.yaml", 'w') {|f| f.puts resultant_string } template = get_template_for( :hooks ) resultant_string = template.result( get_binding_for_service( name ) ) File.open("#{name}/hooks.rb", 'w') {|f| f.puts resultant_string } # Added following lines to generate 'Gemfile' automatically. template = get_template_for( :gemfile ) resultant_string = template.result( get_binding_for_service( name ) ) File.open("#{name}/Gemfile", 'w') {|f| f.puts resultant_string } end |
permalink .generate_synchronous_service(name) ⇒ Object
Generate a new RESTRack service. This does not use EventMachine and can be used with any Rack supported web server.
73 74 75 76 77 |
# File 'lib/restrack/generator.rb', line 73 def generate_synchronous_service(name) @async = false generate_service(name) @async = nil end |