require 'rake' require 'rails/generators' module Template class InstallGenerator < Rails::Generators::Base desc "Installs some simple files needed for a rails 3 app" # Commandline options can be defined here using Thor-like options: class_option :my_opt, :type => :boolean, :default => false, :desc => "My Option" # I can later access that option using: # options[:my_opt] def self.source_root @source_root ||= File.join(File.dirname(__FILE__), 'templates') end # Generator Code. Remember this is just suped-up Thor so methods are executed in order def copy_template_files copy_file 'app/controllers/welcome_controller.rb','app/controllers/welcome_controller.rb' template 'app/views/layouts/application.html.erb' template 'app/views/welcome/index.html.erb' template 'config/database.yml' template 'public/stylesheets/screen.css' end def add_routes route 'root :to => "welcome#index"' end def generate_navigation generate('navigation_config',"--force") @navigation = '' while !(controller_name = ask("Enter controller name: [no more controllers]")).blank? do c_name = controller_name.scan(/\w+/)[0] #get only first arg. generate('controller', c_name+' show') #TODO: push all other args onto end. @navigation += 'primary.item :'+controller_name.downcase+' ,\''+controller_name.capitalize+'\', '+controller_name.downcase+'_show_url'+' ' end template 'config/navigation.rb' end def setup_db plugin('easypg', :git=>'git://github.com/rahim/easypg.git') end def run_post_install_scripts begin sh 'rm public/index.html' #todo other OS. sh 'rake db:setup' rescue puts '----- Unable to run post install scripts. You need to: -------' puts '| - Remove index file in index.html |' puts '| - Run rake db:setup |' puts '| - Start your server: rails server |' puts '---------------------------------------------------------------' end end end end