Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 18th, 2012  |  syntax: None  |  size: 2.54 KB  |  hits: 21  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. set :application, "projectname"
  2. set :repository, "http://svn.foo.com/svn/projectname/trunk"
  3. set :umask, "022"
  4. set :apache_user, "www-data"
  5.  
  6. task :staging do
  7.   set :user, "webadmin"
  8.   set :repository, "http://svn.foo.com/svn/projectname"
  9.   set :domain, "#{user}@projectname.foo.com"
  10.   set :deploy_to, "/home/webadmin/websites/projectname.foo.com"
  11.   #set :flush_temp, "/home/webadmin/clear-projectname-cache.sh"
  12.   set :flush_temp, "/home/webadmin/clear-project-whose-script-works-cache.sh" #this works
  13.  #the second, working script has the same owner:group/permissions
  14.  #the first script (which is causing the "sudo password" prompt) works fine when called directly from the shell on the server (sudo as webadmin)
  15. end
  16.  
  17. #task :production do
  18. #  set :user, "webadmin"
  19. #  set :repository, "http://svn.foo.com/svn/projectname"
  20. #  set :domain, "#{user}@projectname.foo.com"
  21. #  set :deploy_to, "/home/webadmin/websites/projectname.foo.com"
  22. #  set :flush_temp, "/home/webadmin/clear-projectname-cache.sh"
  23. #end
  24.  
  25. namespace :vlad do
  26.   #override setup (create less directories than for Rails)
  27.   Rake.clear_tasks('vlad:setup_app')
  28.  
  29.   remote_task :setup_app, :roles => :app do
  30.     dirs = [deploy_to, releases_path, scm_path, shared_path, "#{deploy_to}/log"]
  31.     dirs += %w(assets).map { |d| File.join(shared_path, d) }
  32.     run [ "umask #{umask}",
  33.           "mkdir -p #{dirs.join(' ')}",
  34.           "chown -R #{user}:#{apache_user} #{shared_path}/assets",
  35.           "chmod -R 775 #{shared_path}/assets",
  36.         ].join(" && ")
  37.   end
  38.  
  39.   #Override update - first checkout to scm folder (fast if not the first time, then export from it to the release directory)
  40.   Rake.clear_tasks('vlad:update')
  41.   remote_task :update, :roles => :app do
  42.     symlink = false
  43.     begin
  44.       run [ "cd #{scm_path}",
  45.             "#{source.checkout revision, scm_path}",
  46.             "#{source.export scm_path, release_path}",
  47.             "chmod -R g+w #{latest_release}",
  48.             "rm -rf #{latest_release}/assets",
  49.             "ln -s #{shared_path}/assets #{latest_release}/assets"
  50.           ].join(" && ")
  51.  
  52.       symlink = true
  53.       run "rm -f #{current_path} && ln -s #{latest_release} #{current_path}"
  54.  
  55.       run "echo #{now} $USER #{revision} #{File.basename release_path} >> #{deploy_to}/revisions.log"
  56.       run "cd #{current_path} && sake db/build"
  57.       run "sudo #{flush_temp}"
  58.     rescue => e
  59.       run "rm -f #{current_path} && ln -s #{previous_release} #{current_path}" if
  60.         symlink
  61.       run "rm -rf #{release_path}"
  62.       raise e
  63.     end
  64.   end
  65.  
  66. end