############################################################# # This file is designed as a starting point to use # capistrano to deploy the trunk of tracks to a webhost # where it is served using Phusion Passenger. For more # info on getting started with Passenger, see # http://www.modrails.com/ ############################################################# ############################################################# # Application ############################################################# set :application, "tracks" set :deploy_to, "/var/www/apps/tracks" ############################################################# # Settings ############################################################# default_run_options[:pty] = true ssh_options[:forward_agent] = true set :use_sudo, true set :scm_verbose, true set :rails_env, "production" ############################################################# # Servers ############################################################# #set :user, "your_login_name_on_your_webhost_if_different_from_local" set :domain, "tracks.yoursite.com" server domain, :app, :web role :db, domain, :primary => true ############################################################# # Git ############################################################# set :scm, :git set :branch, "master" set :repository, "git://github.com/bsag/tracks.git" set :deploy_via, :remote_cache ############################################################# # Passenger ############################################################# namespace :deploy do desc "Symlink config files" task :before_symlink do run "rm #{release_path}/public/.htaccess" #not compatible with Passenger run "ln -s #{shared_path}/config/database.yml #{release_path}/config/database.yml" run "ln -s #{shared_path}/config/site.yml #{release_path}/config/site.yml" run "ln -s #{shared_path}/config/environment.rb #{release_path}/config/environment.rb" end # Restart passenger on deploy desc "Restarting mod_rails with restart.txt" task :restart, :roles => :app, :except => { :no_release => true } do run "touch #{current_path}/tmp/restart.txt" end [:start, :stop].each do |t| desc "#{t} task is a no-op with mod_rails" task t, :roles => :app do ; end end end namespace :db do desc 'Dumps the production database to db/production_data.sql on the remote server' task :remote_db_dump, :roles => :db, :only => { :primary => true } do run "cd #{deploy_to}/#{current_dir} && " + "rake RAILS_ENV=#{rails_env} db:dump_sql --trace" end desc 'Downloads db/production_data.sql from the remote production environment to your local machine' task :remote_db_download, :roles => :db, :only => { :primary => true } do execute_on_servers(options) do |servers| self.sessions[servers.first].sftp.connect do |tsftp| tsftp.download!("#{deploy_to}/#{current_dir}/db/production_data.sql", "db/production_data.sql") end end end desc 'Cleans up data dump file' task :remote_db_cleanup, :roles => :db, :only => { :primary => true } do execute_on_servers(options) do |servers| self.sessions[servers.first].sftp.connect do |tsftp| tsftp.remove! "#{deploy_to}/#{current_dir}/db/production_data.sql" end end end desc 'Dumps, downloads and then cleans up the production data dump' task :remote_db_runner do remote_db_dump remote_db_download remote_db_cleanup end end