Skip to content

Instantly share code, notes, and snippets.

@bogdan
Created September 29, 2010 10:44
Show Gist options
  • Save bogdan/602547 to your computer and use it in GitHub Desktop.
Save bogdan/602547 to your computer and use it in GitHub Desktop.
require 'capistrano/ext/multistage'
set :stages, %w(staging production)
set :default_stage, "staging"
#set :branch, "default"
set :scm, :git
set :scm_verbose, false
set :repository, "git@github.com:railsware/startwire.git"
ssh_options[:forward_agent] = true
default_run_options[:pty] = true
set :keep_releases, 5
#this block is fix of strange process/reaper error during deployment.
deploy.task :restart do
run "touch #{current_path}/tmp/restart.txt"
end
after "deploy:update_code", "deploy:setup_rails"
after "deploy:restart", "deploy:god:restart"
namespace :deploy do
desc "Setup rails environment"
task :setup_rails do
run "ln -s #{deploy_to}/#{shared_dir}/config/initializers/local_initializer.rb #{current_release}/config/initializers/local_initializer.rb"
run "ln -s #{deploy_to}/#{shared_dir}/config/database.yml #{current_release}/config/database.yml"
run "ln -s #{deploy_to}/#{shared_dir}/config/resque.yml #{current_release}/config/resque.yml"
run "ln -s #{deploy_to}/#{shared_dir}/config/sunspot.yml #{current_release}/config/sunspot.yml"
run "ln -s #{deploy_to}/#{shared_dir}/solr #{current_release}/solr"
run "rm -f #{current_release}/solr/conf"
run "ln -s #{current_release}/vendor/config/solr #{current_release}/solr/conf"
run "rm -f #{current_release}/log"
run "ln -s #{deploy_to}/#{shared_dir}/log #{current_release}/"
run "bundle install --gemfile=#{current_release}/Gemfile"
run "cd #{current_release}/ && rake db:migrate RAILS_ENV=#{rails_env}"
end
namespace :god do
desc "Starting and stopping via god."
task :start do
Dir["#{current_path}/config/god/*.god"].each { |f|
sudo "RAILS_ENV=#{rails_env} RAILS_ROOT=#{current_path} #{god_executable} load #{f}"
}
sudo "RAILS_ENV=#{rails_env} RAILS_ROOT=#{current_path} #{god_executable} load #{current_path}/config/god/resque.god"
sudo "#{god_executable} start #{god_group}"
end
desc "Starting and stopping via god."
task :restart do
sudo "#{god_executable} restart #{god_group}"
end
desc "Starting and stopping via god."
task :stop do
sudo "#{god_executable} stop #{god_group}"
sudo "#{god_executable} remove #{god_group}"
end
desc "Get status for god processes"
task :status_all do
sudo "#{god_executable} status #{god_group}"
end
desc "Get status for god specified process"
task :status do
sudo "#{god_executable} status #{proc}"
end
end
desc "Populate database with fake data"
task :populate do
run "cd #{current_path}"
sudo "service nginx stop || true"
run "cd #{current_path} && RAILS_ROOT=#{current_path} RAILS_ENV=#{rails_env} rake -f #{current_path}/Rakefile db:populate"
sudo "service nginx start"
end
end
namespace :maintenance do
desc "Reboot the server"
task :reboot do
sudo "reboot"
end
desc "Show hostname"
task :uname do
run "uname -a"
end
end
Dir[File.join(File.dirname(__FILE__), '..', 'vendor', 'gems', 'hoptoad_notifier-*')].each do |vendored_notifier|
$: << File.join(vendored_notifier, 'lib')
end
require 'hoptoad_notifier/capistrano'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment