From 90dfc96206d6d7f0a7c35b86f9c2f3ad49b57f9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9gis=20Hanol?= Date: Mon, 11 Apr 2016 20:42:40 +0200 Subject: [PATCH] new 'uploads:gather' rake task --- lib/tasks/uploads.rake | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/lib/tasks/uploads.rake b/lib/tasks/uploads.rake index 9000c9b8b98..e50e098e59a 100644 --- a/lib/tasks/uploads.rake +++ b/lib/tasks/uploads.rake @@ -1,5 +1,44 @@ require "digest/sha1" +################################################################################ +# gather # +################################################################################ + +task "uploads:gather" => :environment do + require "db_helper" + + public_directory = "#{Rails.root}/public" + current_db = RailsMultisite::ConnectionManagement.current_db + + puts "", "Gathering uploads for '#{current_db}'...", "" + + Upload.where("url !~ '^\/uploads\/#{current_db}'").find_each do |upload| + begin + old_db = upload.url[/^\/uploads\/([^\/]+)\//, 1] + from = upload.url.dup + to = upload.url.sub("/uploads/#{old_db}/", "/uploads/#{current_db}/") + source = "#{public_directory}#{from}" + destination = "#{public_directory}#{to}" + + # create destination directory + `mkdir -p '#{File.dirname(destination)}'` + # copy the file + `cp --link '#{source}' '#{destination}'` + # ensure file has been succesfuly copied over + raise unless File.exists?(destination) && File.size(destination) > 0 + # remap links in db + DbHelper.remap(from, to) + rescue + putc "!" + else + putc "." + end + end + + puts "", "Done!" + +end + ################################################################################ # backfill_shas # ################################################################################