#!/bin/ksh # start-rails # does the grunt work of starting a rails installation # By Matt Williams, http://matthewkwilliams.com # 25 Aug 2008 # # Released under MIT license if [ $# -lt 1 ]; then echo "Usage: ${0} project-name [rails arguments]" exit 1 fi project=$1 shift rails $* $project cd $project echo Set up rspec script/plugin install git://github.com/dchelimsky/rspec.git script/plugin install git://github.com/dchelimsky/rspec-rails.git script/generate rspec echo Install acts_as_statemachine script/plugin install http://elitists.textdriven.com/svn/plugins/acts_as_state_machine/trunk acts_as_state_machine echo Install restful auth script/plugin install git://github.com/technoweenie/restful-authentication.git script/generate authenticated user sessions --include-activation --stateful --rspec echo Database setup rake db:migrate rake db:migrate RAILS_ENV=test echo Add Activation route head -1 config/routes.rb > /tmp/start-rails-router.$$ cat <> /tmp/start-rails-router.$$ # Activation code map.activate '/activate/:activation_code', :controller => 'users', :action => 'activate', :activation_code => nil EOF size=`wc -l config/routes.rb` size=`expr ${size%% *} - 1` tail -${size} config/routes.rb >> /tmp/start-rails-router.$$ echo Updating user Route sed -e 's/map.resources :users.*$/map.resources :users, :member => { :suspend =>:put,:unsuspend =>:put,:purge =>:delete }/' /tmp/start-rails-router.$$ > config/routes.rb echo Adding Observer to config/environment.rb sed -e 's/# Activate observers.*/&\n\n config.active_record.observers = :user_observer\n/' config/environment.rb > /tmp/srfoo.$$ mv /tmp/srfoo.$$ config/environment.rb echo Setting globals cat >> config/environments/development.rb <> config/environments/production.rb <> config/environments/test.rb < /tmp/srfoo.$$ mv /tmp/srfoo.$$ app/models/user_mailer.rb echo Setting up the email initializer echo You will want to change the settings cat > config/initializers/email.rb < "mail.example-domain.com", :port => 25, :domain => "www.example-domain.com", :authentication => :login, :user_name => "user@example-domain.com", :password => "secret" } EOF echo Removing public/index.html rm public/index.html