| CODENOTIFIER | HelpYou are not signed inSign in |
Project: acts_as_ferret
Revision: 354
Author: jk
Date: 11 Aug 2008 05:22:45
Diff at Trac: http://projects.jkraemer.net/acts_as_ferret/changeset/354
Changes:cleanup task to remove old index versions from the server, thanks to Sam Giffney for providing this
Files:| ... | ...@@ -68,8 +68,8 @@ | |
| 68 | 68 | task :rebuild, :roles => :app do |
| 69 | 69 | rake = fetch(:rake, 'rake') |
| 70 | 70 | rails_env = fetch(:rails_env, 'production') |
| 71 | indexes = fetch(:ferret_indexes, nil) | |
| 72 | if indexes and indexes.any? | |
| 71 | indexes = fetch(:ferret_indexes, []) | |
| 72 | if indexes.any? | |
| 73 | 73 | run "cd #{current_path}; RAILS_ENV=#{rails_env} INDEXES='#{indexes.join(' ')}' #{rake} ferret:rebuild" |
| 74 | 74 | end |
| 75 | 75 | end |
| ... | ...@@ -84,6 +84,23 @@ | |
| 84 | 84 | run "mkdir -p #{shared_path}/index && rm -rf #{release_path}/index && ln -nfs #{shared_path}/index #{release_path}/index" |
| 85 | 85 | end |
| 86 | 86 | |
| 87 | desc "Clean up old index versions" | |
| 88 | task :cleanup, :roles => :app do | |
| 89 | indexes = fetch(:ferret_indexes, []) | |
| 90 | indexes.each do |index| | |
| 91 | ferret_index_path = "#{shared_path}/index/#{rails_env}/#{index}" | |
| 92 | releases = capture("ls -x #{ferret_index_path}").split.sort | |
| 93 | count = 2 | |
| 94 | if count >= releases.length | |
| 95 | logger.important "no old indexes to clean up" | |
| 96 | else | |
| 97 | logger.info "keeping #{count} of #{releases.length} indexes" | |
| 98 | directories = (releases - releases.last(count)).map { |release| | |
| 99 | File.join(ferret_index_path, release) }.join(" ") | |
| 100 | sudo "rm -rf #{directories}" | |
| 101 | end | |
| 102 | end | |
| 103 | end | |
| 87 | 104 | end |
| 88 | 105 | |
| 89 | 106 | end |