OSDN Git Service

replace vlad:cleanup task
authorokimoto <okimoto@good-day.co.jp>
Fri, 7 May 2010 16:16:25 +0000 (01:16 +0900)
committerokimoto <okimoto@good-day.co.jp>
Fri, 7 May 2010 16:16:25 +0000 (01:16 +0900)
original vlad:cleanup do not unlink symlinks in each releases,
and raise error.

lib/tasks/deploy.rake

index 7c3a454..2b63547 100644 (file)
@@ -33,6 +33,7 @@ namespace :vlad do
   Rake.application.instance_variable_get("@tasks").delete("vlad:update")
   Rake.application.instance_variable_get("@tasks").delete("vlad:start_app")
   Rake.application.instance_variable_get("@tasks").delete("vlad:stop_app")
+  Rake.application.instance_variable_get("@tasks").delete("vlad:cleanup")
 
   # sf.jp の Git リポジトリは git archive の --remote で直接指定出来ないため
   task :update_src do
@@ -77,4 +78,20 @@ namespace :vlad do
   remote_task :stop_app, :roles => :app do
     sudo "#{thin_command} -C #{thin_conf} stop"
   end
+
+  # シンボリックリンクの処理をしておかないと削除時にエラーが発生するため追加
+  remote_task :cleanup do
+    max = keep_releases
+    if releases.length <= max then
+      puts "no old releases to clean up #{releases.length} <= #{max}"
+    else
+      puts "keeping #{max} of #{releases.length} deployed releases"
+
+      (releases - releases.last(max)).each do |release|
+        path = File.join(releases_path, release)
+        run "find #{path} -type l -exec unlink {} \\;"
+        run "rm -rf #{path}"
+      end
+    end
+  end
 end