- set :application, "projectname"
- set :repository, "http://svn.foo.com/svn/projectname/trunk"
- set :umask, "022"
- set :apache_user, "www-data"
- task :staging do
- set :user, "webadmin"
- set :repository, "http://svn.foo.com/svn/projectname"
- set :domain, "#{user}@projectname.foo.com"
- set :deploy_to, "/home/webadmin/websites/projectname.foo.com"
- #set :flush_temp, "/home/webadmin/clear-projectname-cache.sh"
- set :flush_temp, "/home/webadmin/clear-project-whose-script-works-cache.sh" #this works
- #the second, working script has the same owner:group/permissions
- #the first script (which is causing the "sudo password" prompt) works fine when called directly from the shell on the server (sudo as webadmin)
- end
- #task :production do
- # set :user, "webadmin"
- # set :repository, "http://svn.foo.com/svn/projectname"
- # set :domain, "#{user}@projectname.foo.com"
- # set :deploy_to, "/home/webadmin/websites/projectname.foo.com"
- # set :flush_temp, "/home/webadmin/clear-projectname-cache.sh"
- #end
- namespace :vlad do
- #override setup (create less directories than for Rails)
- Rake.clear_tasks('vlad:setup_app')
- remote_task :setup_app, :roles => :app do
- dirs = [deploy_to, releases_path, scm_path, shared_path, "#{deploy_to}/log"]
- dirs += %w(assets).map { |d| File.join(shared_path, d) }
- run [ "umask #{umask}",
- "mkdir -p #{dirs.join(' ')}",
- "chown -R #{user}:#{apache_user} #{shared_path}/assets",
- "chmod -R 775 #{shared_path}/assets",
- ].join(" && ")
- end
- #Override update - first checkout to scm folder (fast if not the first time, then export from it to the release directory)
- Rake.clear_tasks('vlad:update')
- remote_task :update, :roles => :app do
- symlink = false
- begin
- run [ "cd #{scm_path}",
- "#{source.checkout revision, scm_path}",
- "#{source.export scm_path, release_path}",
- "chmod -R g+w #{latest_release}",
- "rm -rf #{latest_release}/assets",
- "ln -s #{shared_path}/assets #{latest_release}/assets"
- ].join(" && ")
- symlink = true
- run "rm -f #{current_path} && ln -s #{latest_release} #{current_path}"
- run "echo #{now} $USER #{revision} #{File.basename release_path} >> #{deploy_to}/revisions.log"
- run "cd #{current_path} && sake db/build"
- run "sudo #{flush_temp}"
- rescue => e
- run "rm -f #{current_path} && ln -s #{previous_release} #{current_path}" if
- symlink
- run "rm -rf #{release_path}"
- raise e
- end
- end
- end