https://gist.github.com/dotnil/5181417
# encoding: utf-8
# config/deploy.rb
#
# - 使用 Unicorn
# - 链接 rabel 的配置文件和用户上传内容
# - 使用 RVM
# Add RVM's lib directory to the load path.
require "rvm/capistrano"
set :rvm_ruby_string, '1.9.3-p392'
set :rvm_type, :user
# http://gembundler.com/deploying.html
require 'bundler/capistrano'
# set this to keep from missing any password prompts
default_run_options[:pty] = true
set :ssh_options, { :forward_agent => true }
set :application, 'rabel'
set :scm, 'git'
set :scm_verbose, false
set :deploy_via, :remote_cache
set :deploy_to, "/var/www/wenyi.me"
set :unicorn_pid, "#{current_path}/tmp/pids/unicorn.pid"
set :repository, "[email protected]:daqing/#{application}.git"
set :branch, ENV['BRANCH'] || 'v2.0'
set :use_sudo, false
set :user, 'foo'
set :domain, 'wenyi.me'
set :rails_env, 'production'
role :web, domain
role :app, domain
role :db, domain, :primary => true
namespace :deploy do
desc "启动服务"
task :start, :roles => :app do
run "cd #{current_path}; bundle exec unicorn_rails --port 3800 --env #{rails_env} --daemonize"
end
desc "停止服务"
task :stop, :roles => :app do
run "kill `cat #{unicorn_pid}`"
end
desc "重新加载服务"
task :reload, :roles => :app do
run "kill -s USR2 `cat #{unicorn_pid}`"
end
desc "重新启动服务"
task :restart, :roles => :app do
stop
start
end
desc '收拾房间,链接文件'
task :housekeeping, :roles => :app do
run "rm -f #{current_path}/config/initializers/siteconf.rb"
run "ln -s #{shared_path}/config/siteconf.rb #{current_path}/config/initializers/siteconf.rb"
run "rm -f #{current_path}/config/database.yml"
run "ln -s #{shared_path}/config/database.yml #{current_path}/config/database.yml"
run "rm -rf #{current_path}/config/settings.yml"
run "ln -s #{shared_path}/config/settings.yml #{current_path}/config/settings.yml"
run "rm -rf #{current_path}/public/uploads"
run "ln -s #{shared_path}/uploads #{current_path}/public/uploads"
run "cd #{current_path}; RAILS_ENV=#{rails_env} bundle exec rake assets:clean"
run "cd #{current_path}; RAILS_ENV=#{rails_env} bundle exec rake assets:precompile"
end
end
after 'deploy:create_symlink', 'deploy:housekeeping', 'deploy:migrate'
after 'deploy', 'deploy:cleanup'