/config/deploy.rb
set :stages, %w(qa staging production)
require 'capistrano/ext/multistage'
require 'config/sitemap_tasks'
require 'cap_recipes/tasks/passenger'
set(:scm_username) { Capistrano::CLI.ui.ask("SVN User name: ") }
set(:scm_password) { Capistrano::CLI.password_prompt("SVN Password: ") }
set(:scm_release_path) { Capistrano::CLI.ui.ask("svn release ex tags/project_x.x.x: ") }
set :repository, "https://svn.sitename.com/project/#{scm_release_path}"
namespace :deploy do
desc "Deploy with Migrations"
task :default do
set :migrate_target, :latest
update_code
migrate
symlink
restart
desc "Generate Sitemap"
task :generate_sitemap, :roles => :app do
run "cd #{current_path} && rake rake sitemap_generator:generate RAILS_ENV=#{rails_env}"
end
end
desc "Run this after every successful deployment"
task :after_default do
run "ln -s #{shared_path}/system/maps #{release_path}/public/"
cleanup
end
end
/config/deploy/production.rb
# For migrations
set :rails_env, 'production'
# Who are we?
set :application, 'application name'
set :user, 'username'
set :password, 'password'
# Where to deploy to?
role :web, 'web ip address'
role :app, 'web ip address'
role :db, 'web ip address', :primary => true
# Set up SSH so it can connect to the EC2 node - assumes your SSH key is in ~/.ssh/id_rsa
ssh_options[:keys] = [File.join(ENV["HOME"], ".ssh", "key_pairs")]
# Deploy details
set :deploy_to, "/home/#{user}/apps/#{application}"
set :use_sudo, false
set :scm_command, 'svn'
set :checkout, 'export'
Capfile
load 'deploy' if respond_to?(:namespace) # cap2 differentiator
Dir['vendor/plugins/*/recipes/*.rb'].each { |plugin| load(plugin) }
load 'config/deploy'