Skip to content

Instantly share code, notes, and snippets.

@Dahie
Created May 20, 2012 19:08
Show Gist options
  • Save Dahie/2759167 to your computer and use it in GitHub Desktop.
Save Dahie/2759167 to your computer and use it in GitHub Desktop.
capistrano deploy rb for uberspace with passenger
# RVM bootstrap
set :rvm_ruby_string, '1.9.2@redmine'
require 'rvm/capistrano'
set :domain, "bugs.ctdp.net"
set :application, domain
set :repository, "dahie@hydra.uberspace.de:ctdp-redmine.git"
set :passenger_port, 3002
set :scm, :git
set :user, "dahie"
set :scm_username, "dahie"
set :use_sudo, false
ssh_options[:forward_agent] = true
role :web, "dahie.hydra.uberspace.de" # Your HTTP server, Apache/etc
role :app, "dahie.hydra.uberspace.de" # This may be the same as your `Web` server
role :db, "dahie.hydra.uberspace.de", :primary => true # This is where Rails migrations will run
#role :db, "your slave db-server here"
set :deploy_to, "/var/www/virtual/#{user}/redmine/"
# If you are using Passenger mod_rails uncomment this:
# if you're still using the script/reapear helper you will need
# these http://github.com/rails/irs_process_scripts
deploy.task :restart, :roles => :app do
#deactivate default restarter
run <<-CMD
if [[ -f #{release_path}/tmp/pids/passenger.#{passenger_port}.pid ]];
then
cd #{deploy_to}/current && passenger stop -p #{passenger_port} --pid-file ./tmp/pids/passenger.#{passenger_port}.pid;
fi
CMD
run "cd #{deploy_to}/current && passenger start -p #{passenger_port} -d -e #{rails_env}"
end
deploy.task :stop, :roles => :app do
run "cd #{release_path} && passenger stop -p #{passenger_port}"
end
deploy.task :start, :roles => :app do
run "cd #{release_path} && passenger start -p #{passenger_port} -d -e #{rails_env}"
end
desc "Clean up old releases. By default, the last 5 releases are kept"
task :clean_up do
count = fetch(:keep_releases, 5).to_i
if count >= releases.length
logger.important "no old releases to clean up"
else
logger.info "keeping #{count} of #{releases.length} deployed releases"
directories = (releases - releases.last(count)).map { |release| File.join(releases_path, release) }.join(" ")
run "rm -rf #{directories}"
end
end
after 'deploy:finalize_update', :roles => :app do
run "cd #{release_path} && rm -r #{release_path}/files"
run "cd #{release_path} && ln -s #{shared_path}/files"
run "cd #{release_path} && ln -nfs #{shared_path}/config/database.yml #{release_path}/config/database.yml"
run "cd #{release_path} && ln -nfs #{shared_path}/config/configuration.yml #{release_path}/config/configuration.yml"
run "cd #{release_path} && ln -nfs #{shared_path}/config/initializers/secret_token.rb #{release_path}/config/initializers/secret_token.rb"
#clean_up
end
namespace :rvm do
task :trust_rvmrc do
run "rvm rvmrc trust #{release_path}"
end
end
after "deploy", "rvm:trust_rvmrc"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment