I use the following Capistrano script to manage deployment of my blog to Dreamhost. It is a modified version of the deploy script provided on the Radiant CMS wiki, and it addresses two bugs involving the svn username and password.
To use it, capify your working rails directory and then replace /config/deploy.rb with the code below:
set :user, '' #dreamhost username goes here
set :application, "" #dreamhost domain name goes here
set :repository, "" #path to your svn repo
set :scm_username, "" #svn username
# =============================================================================
# You shouldn't have to modify the rest of these
# =============================================================================
role :web, application
role :app, application
role :db, application, :primary => true
set :deploy_to, "/home/#{user}/#{application}"
# set :svn, "/path/to/svn" # defaults to searching the PATH
set :use_sudo, false
# set :restart_via, :run
set(:scm_password) { Capistrano::CLI.password_prompt }
# saves space by only keeping last 3 when running cleanup
set :keep_releases, 3
# issues svn export instead of checkout
set :checkout, "checkout"
# keeps a local checkout of the repository on the server to get faster deployments
set :deploy_via, :remote_cache
ssh_options[:paranoid] = false
# =============================================================================
# OVERRIDE TASKS
# =============================================================================
namespace :deploy do
desc "Restart Passenger"
task :restart, :roles => :app do
run "touch #{current_path}/tmp/restart.txt"
end
desc <<-DESC
Deploy and run pending migrations. This will work similarly to the \
`deploy' task, but will also run any pending migrations (via the \
`deploy:migrate' task) prior to updating the symlink. Note that the \
update in this case it is not atomic, and transactions are not used, \
because migrations are not guaranteed to be reversible.
DESC
task :migrations do
set :migrate_target, :latest
update_code
migrate
symlink
restart
end
end