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
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