class Tennpipes::Generators::Project
Responsible for generating new Tennpipes
projects based on the specified project components.
Public Class Methods
source_root()
click to toggle source
# File lib/tennpipes-init/generators/project.rb, line 12 def self.source_root; File.expand_path(File.dirname(__FILE__)); end
Public Instance Methods
bundle_dependencies()
click to toggle source
Bundle all required components using bundler and Gemfile.
# File lib/tennpipes-init/generators/project.rb, line 123 def bundle_dependencies if options[:bundle] run_bundler end end
finish_message()
click to toggle source
Finish message.
# File lib/tennpipes-init/generators/project.rb, line 132 def finish_message say say '=' * 65, :green say "#{name} is ready for development!", :green say '=' * 65, :green say "$ cd #{options[:root]}/#{name}" say "$ bundle" unless options[:bundle] say "=" * 65, :green say end
setup_components()
click to toggle source
For each component, retrieve a valid choice and then execute the associated generator.
# File lib/tennpipes-init/generators/project.rb, line 82 def setup_components return if options[:template] @_components = options.dup.slice(*self.class.component_types) self.class.component_types.each do |comp| choice = @_components[comp] = resolve_valid_choice(comp) execute_component_setup(comp, choice) end store_component_config('.components') store_component_choice(:namespace, @project_name) store_component_choice(:migration_format, options[:migration_format]) end
setup_project()
click to toggle source
Copies over the Tennpipes
base application app.
# File lib/tennpipes-init/generators/project.rb, line 44 def setup_project valid_constant? name app = (options[:app] || "App") @project_name = name.gsub(/\W/, '_').underscore.camelize @app_name = app.gsub(/\W/, '_').camelize self.destination_root = File.join(options[:root], name) if options[:template] execute_runner(:template, options[:template]) else directory('project/', destination_root) empty_directory destination_root('public/images') empty_directory destination_root('public/javascripts') empty_directory destination_root('public/stylesheets') store_component_config('.components') unless options[:lean] app_skeleton('app', options[:tiny]) append_file destination_root('config/apps.rb'), "Tennpipes.mount('#{@project_name}::#{@app_name}', :app_file => Tennpipes.root('app/app.rb')).to('/')\n" end template 'templates/Gemfile.tt', destination_root('Gemfile') template 'templates/Rakefile.tt', destination_root('Rakefile') template 'templates/project_bin.tt', destination_root("bin/#{name}") File.chmod(0755, destination_root("bin/#{name}")) if options.gem? template 'templates/gem/gemspec.tt', destination_root(name + '.gemspec') template 'templates/gem/README.md.tt', destination_root('README.md') template 'templates/gem/lib/libname.tt', destination_root("lib/#{name}.rb") template 'templates/gem/lib/libname/version.tt', destination_root("lib/#{name}/version.rb") else empty_directory_with_keep_file destination_root('tmp') empty_directory_with_keep_file destination_root('log') end end end
setup_test_files()
click to toggle source
Generates test files for tiny app skeleton.
# File lib/tennpipes-init/generators/project.rb, line 97 def setup_test_files if options[:tiny] && @_components[:test] != :none test_component = @_components[:test] test_component = "rspec" if test_component == "cucumber" uppercase_test_component = test_component.upcase controller_template_name = "#{uppercase_test_component}_CONTROLLER_TEST" helper_template_name = "#{uppercase_test_component}_HELPER_TEST" return unless defined?(controller_template_name) controller_content = instance_eval(controller_template_name).gsub(/!PATH!/, "Controller").gsub(/!NAME!/, "").gsub(/!EXPANDED_PATH!/, "/") helper_content = instance_eval(helper_template_name).gsub(/!NAME!/, "#{@project_name}::#{@app_name}::#{DEFAULT_HELPER_NAME}") proc{|*args| args.map{|str| str.gsub!(/!PATH!/, recognize_path)} }.call(controller_content, helper_content) directory_name = [:rspec, :steak].include?(test_component.to_sym) ? "spec" : "test" base_path = File.join(directory_name, "app") create_file destination_root("#{base_path}/controllers/controllers_#{directory_name}.rb"), controller_content, :skip => true create_file destination_root("#{base_path}/helpers/helpers_#{directory_name}.rb"), helper_content, :skip => true helper_path = destination_root(File.join(directory_name, "#{directory_name == "spec" ? "spec_helper" : "test_config"}.rb")) gsub_file helper_path, %r{helpers/\*\*/\*\.rb}, "helpers.rb" end end