Class: Generate
- Includes:
- Thor::Actions
- Defined in:
- lib/volt/cli/generate.rb
Class Method Summary collapse
Instance Method Summary collapse
- #component(name) ⇒ Object
- #controller(name, component = 'main') ⇒ Object
- #gem(name) ⇒ Object
- #http_controller(name, component = 'main') ⇒ Object
- #model(name, component = 'main') ⇒ Object
- #task(name, component = 'main') ⇒ Object
- #view(name, component = 'main') ⇒ Object
Class Method Details
.source_root ⇒ Object
51 52 53 |
# File 'lib/volt/cli/generate.rb', line 51 def self.source_root File.(File.join(File.dirname(__FILE__), '../../../templates')) end |
Instance Method Details
#component(name) ⇒ Object
16 17 18 19 20 21 22 23 |
# File 'lib/volt/cli/generate.rb', line 16 def component(name) name = name.underscore component_folder = Dir.pwd + "/app/#{name}" component_spec_folder = Dir.pwd + '/spec/app/' + name @component_name = name directory('component', component_folder, component_name: name) directory('component_specs', component_spec_folder) end |
#controller(name, component = 'main') ⇒ Object
71 72 73 74 75 76 77 78 |
# File 'lib/volt/cli/generate.rb', line 71 def controller(name, component = 'main') controller_name = name.underscore + '_controller' unless name =~ /_controller$/ output_file = Dir.pwd + "/app/#{component.underscore}/controllers/#{controller_name}.rb" spec_file = Dir.pwd + "/spec/app/#{component.underscore}/integration/#{name.underscore}_spec.rb" template('controller/model_controller.rb.tt', output_file, component_module: component.camelize, model_controller_name: controller_name.camelize) template('controller/model_controller_spec.rb.tt', spec_file, describe: name.underscore) end |
#gem(name) ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/volt/cli/generate.rb', line 35 def gem(name) require 'volt/cli/new_gem' # remove prefixed volt- name = name.gsub(/^volt[-]/, '') if name =~ /[-]/ require 'volt' require 'volt/extra_core/logger' Volt.logger.error('Gem names should use underscores for their names. Currently volt only supports a single namespace for a component.') return end NewGem.new(self, name, ) end |
#http_controller(name, component = 'main') ⇒ Object
58 59 60 61 62 63 64 65 66 |
# File 'lib/volt/cli/generate.rb', line 58 def http_controller(name, component = 'main') name = name.underscore + '_controller' unless name =~ /_controller$/ output_file = Dir.pwd + "/app/#{component}/controllers/server/#{name.underscore}.rb" spec_file = Dir.pwd + "/spec/app/#{component.underscore}/controllers/server/#{name}_spec.rb" template('controller/http_controller.rb.tt', output_file, component_module: component.camelize, http_controller_name: name.camelize) template('controller/http_controller_spec.rb.tt', spec_file, component_module: component.camelize, http_controller_name: name.camelize) end |
#model(name, component = 'main') ⇒ Object
7 8 9 10 11 12 |
# File 'lib/volt/cli/generate.rb', line 7 def model(name, component = 'main') output_file = Dir.pwd + "/app/#{component.underscore}/models/#{name.underscore.singularize}.rb" spec_file = Dir.pwd + "/spec/app/#{component.underscore}/models/#{name.underscore.pluralize}_spec.rb" template('model/model.rb.tt', output_file, model_name: name.camelize.singularize) template('model/model_spec.rb.tt', spec_file, model_name: name.camelize.singularize) end |
#task(name, component = 'main') ⇒ Object
83 84 85 86 87 88 89 |
# File 'lib/volt/cli/generate.rb', line 83 def task(name, component = 'main') name = name.underscore.gsub(/_tasks$/, '').singularize.gsub('_task', '') + '_task' output_file = Dir.pwd + "/app/#{component}/tasks/#{name}.rb" spec_file = Dir.pwd + "/spec/app/#{component}/tasks/#{name}_spec.rb" template('task/task.rb.tt', output_file, task_name: name.camelize.singularize) template('task/task_spec.rb.tt', spec_file, task_name: name.camelize.singularize) end |
#view(name, component = 'main') ⇒ Object
94 95 96 97 98 99 |
# File 'lib/volt/cli/generate.rb', line 94 def view(name, component = 'main') name = name.underscore.pluralize view_folder = Dir.pwd + "/app/#{component}/views/#{name}/" directory('view', view_folder, view_name: name, component: component) controller(name, component) unless controller_exists?(name, component) end |