require 'rails/generators' require 'Rake' #need rake to be able to execute shell commands module Template #kudos to Mike Farmer from stackoverflow http://stackoverflow.com/users/4082/mike-farmer class InstallGenerator < Rails::Generators::Base desc "Creates some basic files for a rails 3 app" # Add some extra options here: # 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 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