namespace :server do
STAGE = "STAGE_SERVER" PRODUCTION = "PROD_SERVER" PORT = "PORT_NUMBER" SERVER_DIR = '/home/www/PROJECT_DIR' desc 'Uploads to production server' task :upload_production => :environment do app_upload "-p#{PORT} USER_NAME@#{PRODUCTION}" end desc 'Uploads to stage server' task :upload => :environment do app_upload "-p#{PORT} USER_NAME@#{STAGE}" end def app_upload server_ssh puts "Really upload to \033[0;37m#{SERVER_DIR}\033[0;32m ?" STDIN.gets puts 'Pull from git' `git pull` puts 'Push to git' `git push` print 'Assets change? ' puts change_assets = !!(`git diff --name-only HEAD^` =~ /assets/) system %Q(ssh -t #{server_ssh} "source .zshrc && deploy.sh #{SERVER_DIR} #{change_assets}") end
end