class Ella::ProjectGenerator

This beast of a subclass generates a new Ella project from scratch.


Ella requires a main project file for almost everything. Consider this, anyone who might want to change the order of this method.

Public Instance Methods

run() click to toggle source
# File lib/ella/generator/project_generator.rb, line 9
def run
  Log.yell("Generating New Ella Project: \"#{@directory.human}\"")

  prepare_project_directory
  create_main_project_file
  initialize_git
  generate_pipeline_directories
  initialize_config
  generate_model_directory
  generate_views
  generate_controllers
  initialize_bundle
end

Private Instance Methods

create_main_project_file() click to toggle source
# File lib/ella/generator/project_generator.rb, line 37
def create_main_project_file
  Ella::Template.new('main.rb', template_vars: { name: @directory }).write
  Log.newline
end
generate_controllers() click to toggle source
# File lib/ella/generator/project_generator.rb, line 76
def generate_controllers
  Log.info('Generating root controller')
  ControllerGenerator.new(directory: 'root').run
  Log.newline
end
generate_model_directory() click to toggle source
# File lib/ella/generator/project_generator.rb, line 64
def generate_model_directory
  make_directory('models')
  Log.newline
end
generate_pipeline_directories() click to toggle source
# File lib/ella/generator/project_generator.rb, line 47
def generate_pipeline_directories
  Log.info('Generating pipeline directories')
  make_directory('assets')
  make_directory('assets/css')
  make_directory('assets/js')
  make_directory('public')
  make_directory('public/css')
  make_directory('public/js')
  Log.newline
end
generate_views() click to toggle source
# File lib/ella/generator/project_generator.rb, line 69
def generate_views
  Log.info('Generating views')
  ViewGenerator.new(templates: ['layout'], template_vars: { name: @directory }).run
  ViewGenerator.new(directory: 'root', templates: ['index']).run
  Log.newline
end
initialize_bundle() click to toggle source
# File lib/ella/generator/project_generator.rb, line 82
def initialize_bundle
  Log.info('Creating Gemfile')
  GemfileGenerator.new.run
  Log.newline
end
initialize_config() click to toggle source
# File lib/ella/generator/project_generator.rb, line 58
def initialize_config
  Log.info('Generating configuration files')
  ConfigGenerator.new.run
  Log.newline
end
initialize_git() click to toggle source
# File lib/ella/generator/project_generator.rb, line 42
def initialize_git
  Log.info('Initializing git')
  `git init`
end
prepare_project_directory() click to toggle source
# File lib/ella/generator/project_generator.rb, line 25
def prepare_project_directory
  if Dir.entries('.').include?(@directory.snake_case)
    Log.error('A directory with that name already exists. Aborting.')
    abort
  end
  Log.newline
  Log.info('Creating project core')
  make_directory(@directory.snake_case)
  Dir.chdir(@directory.snake_case)
  make_directory('temp')
end