Review of the uploaders

Rake task to recreate version: uploader:recreate or uploader:recreate name1 name2 ...
This commit is contained in:
chris committed 2013-10-20 16:07:20 +08:00
1 parent cce8f1be9b
commit 9f5bce9351
8 files changed
+90 -62

No files matched your search

+40
View File
@@ -0,0 +1,40 @@
namespace :uploader do
task :recreate => :environment do
mongoid_collections = Mongoid.database.collections.reject{|c| c.name.include?('.')}
ARGV.shift
if ARGV.present?
uploaders = []
ARGV.each{ |arg|
task arg.to_sym do ; end
uploaders << arg
}
else
uploaders = %w(AvatarUploader ImageUploader)
end
klasses = mongoid_collections.inject([]) { |klasses, coll|
if klasses.blank?
klasses = coll.find().map{|c| c['_type']}.uniq.compact
else
klasses += coll.find().map{|c| c['_type']}.uniq.compact
end
klasses
}
to_recreate = klasses.inject([]) { |names, name|
klass = name.constantize rescue nil
klass.uploaders.each_value{ |value|
if uploaders.include?(value.to_s) && !names.include?(name)
names << name
end
} unless klass.nil?
names
}
to_recreate.each { |name|
klass = name.constantize
klass.all.each{ |object|
klass.uploaders.each_key{ |key|
object.send(key).recreate_versions! if object[key] rescue nil
}
}
}
end
end