Cleaning up old releases
Instead of relaying on running cleanup of old releases via capistrano, we have a cron job to only keep releases for last two days (but at least three latest).
#!/usr/bin/env ruby require 'fileutils' KEEP_RELEASES = 3 KEEP_DAYS = 2 EXCLUDE_APPS = %W(uploadr) cut_time = (Time.now.utc - KEEP_DAYS*24*60*60).strftime("%Y%m%d%H%M%S").to_i Dir['/u/apps/*'].each do |app| next if EXCLUDE_APPS.include?(File.basename(app)) dirs = Dir["#{ app }/releases/*"] fresh = dirs.select { |dir| (dir.split('/').last).to_i > cut_time } latest = dirs.sort.last(KEEP_RELEASES ) (dirs - fresh - latest).each do |dir| FileUtils.rm_rf dir end end
