class Tennpipes::Generators::Component

Responsible for add components within a Tennpipes project.

Public Class Methods

banner() click to toggle source
source_root() click to toggle source
# File lib/tennpipes-init/generators/component.rb, line 11
def self.source_root; File.expand_path(File.dirname(__FILE__)); end

Public Instance Methods

setup_components() click to toggle source

For each component, retrieve a valid choice and then execute the associated generator.

# File lib/tennpipes-init/generators/component.rb, line 29
def setup_components
  self.destination_root = options[:root]
  if in_app_root?
    @_components = options.dup.slice(*self.class.component_types)
    @app_name = (options[:app] || "App").gsub(/\W/, '_').camelize
    if @_components.values.delete_if(&:blank?).empty?
      self.class.start(["-h"])
      say
      say "Current Selected Components:"
      list = []
      self.class.component_types.each do |comp|
        list << [comp, fetch_component_choice(comp)]
      end
      print_table(list, :indent => 2)
      exit
    end

    self.class.component_types.each do |comp|
      next if @_components[comp].blank?

      choice = @_components[comp] = resolve_valid_choice(comp)
      existing = fetch_component_choice(comp)
      if existing != 'none' && existing != choice
        next unless yes?("Switch #{comp} to '#{choice}' from '#{existing}' ?[yes/no]:")
      end
      @project_name = fetch_component_choice(:namespace)
      if comp.to_s == 'test' && !already_exists?(@app_name, @project_name)
        say "#{@project_name}::#{@app_name} does not exist."
        say "Please, change app name."
        next
      end
      execute_component_setup(comp, choice)
      store_component_choice(comp, choice)
      if comp.to_s == 'orm' && choice.to_s != 'none'
        inject_into_file destination_root('Rakefile'), "TennpipesTasks.use(:database)\n", :before => "TennpipesTasks.init"
        inject_into_file destination_root('Rakefile'), "TennpipesTasks.use(#{choice.to_sym.inspect})\n", :before => "TennpipesTasks.init"
      end
    end
  else
    say 'You are not at the root of a Tennpipes application! (config/boot.rb not found)'
  end
end