Ruby on Rails deployment configurations

/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'

Leave a comment