require 'rails/generators' require 'rails/generators/rails/app/app_generator' module Laces class Generator < Rails::Generators::AppGenerator class_option :database , type: :string , aliases: '-d', default: 'mysql', desc: "Preconfigure for selected database (options: #{DATABASES.join('/')})" class_option :skip_test_unit, type: :boolean, aliases: '-T', default: true , desc: 'Skip Test::Unit files' class_option :heroku , type: :boolean, aliases: '-H', default: false , desc: 'Create staging and production heroku apps' def finish_template invoke :laces_customization super end def laces_customization say "Remove files we don't need" build :remove_public_index build :remove_public_images_rails say 'Setting up the development environment' build :raise_delivery_errors say 'Setting up the staging environment' build :setup_staging_environment say 'Creating laces views' build :create_views_shared build :create_application_layout say 'Create javascript directories' build :create_js_directories say 'Replace Gemfile' build :replaced_gemfile bundle_command 'install' say 'Setting up database' build :use_mysql_config_template if 'mysql' == options[:database] build :create_database say 'Configuring app' build :generate_cucumber build :setup_default_rake_task say 'Copying miscellaneous support files' build :copy_misc_files say 'Setting up a root route' build :setup_root_route say 'Initializing git and initial commit' build :gitignore_files build :init_git say 'Setup api directory' build :api_directory say 'Generate devise user model' build :generate_devise say 'Replace application.rb' build :replace_application say 'Replace application_controller.rb' build :replace_application_controller build :replace_application say 'Add config file' build :add_config_file say 'Add initializer files' build :intializer_files say 'Setup Mailing' build :setup_mail say 'Add templating' build :add_templating if options['heroku'] say "Creating heroku apps" build :create_heroku_apps build :document_heroku end say 'Add application helper' build :add_application_helper say 'home page' build :add_pages_controller_and_home say 'Set up stylesheets' build :setup_stylesheets say 'Add images' build :add_images say 'Congratulations! You just tied our laces.' say "Remember to run 'rails generate airbrake' with your API key." end protected def get_builder_class Laces::AppBuilder end def using_active_record? !options[:skip_active_record] end end end