2013-02-26 00:42:20 +08:00
|
|
|
task "images:compress" => :environment do
|
2013-02-06 03:16:51 +08:00
|
|
|
io = ImageOptim.new
|
|
|
|
images = Dir.glob("#{Rails.root}/app/**/*.png")
|
|
|
|
image_sizes = Hash[*images.map{|i| [i,File.size(i)]}.to_a.flatten]
|
|
|
|
io.optimize_images!(images) do |name, optimized|
|
|
|
|
if optimized
|
|
|
|
new_size = File.size(name)
|
|
|
|
puts "#{name} => from: #{image_sizes[name.to_s]} to: #{new_size}"
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2013-06-13 07:43:50 +08:00
|
|
|
desc "updates reverse index of image uploads"
|
|
|
|
task "images:reindex" => :environment do
|
|
|
|
RailsMultisite::ConnectionManagement.each_connection do |db|
|
|
|
|
puts "Reindexing #{db}"
|
|
|
|
Post.select([:id, :cooked]).find_each do |p|
|
|
|
|
doc = Nokogiri::HTML::fragment(p.cooked)
|
|
|
|
doc.search("img").each do |img|
|
|
|
|
src = img['src']
|
2013-06-16 16:21:01 +08:00
|
|
|
if src.present? && Upload.has_been_uploaded?(src) && m = Upload.uploaded_regex.match(src)
|
2013-06-13 07:43:50 +08:00
|
|
|
begin
|
2013-06-14 05:44:24 +08:00
|
|
|
PostUpload.create({ post_id: p.id, upload_id: m[:upload_id] })
|
2013-06-13 07:43:50 +08:00
|
|
|
rescue ActiveRecord::RecordNotUnique
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
2013-06-14 05:44:24 +08:00
|
|
|
putc "."
|
2013-06-13 07:43:50 +08:00
|
|
|
end
|
|
|
|
end
|
|
|
|
puts "\ndone."
|
|
|
|
end
|
2013-06-20 03:51:41 +08:00
|
|
|
|
|
|
|
desc "clean orphan uploaded files"
|
|
|
|
task "images:clean_orphans" => :environment do
|
|
|
|
RailsMultisite::ConnectionManagement.each_connection do |db|
|
|
|
|
puts "Cleaning up #{db}"
|
|
|
|
# ligthweight safety net to prevent users from wiping all their uploads out
|
|
|
|
if PostUpload.count == 0 && Upload.count > 0
|
|
|
|
puts "The reverse index is empty. Make sure you run the `images:reindex` task"
|
|
|
|
next
|
|
|
|
end
|
|
|
|
Upload.joins("LEFT OUTER JOIN post_uploads ON uploads.id = post_uploads.upload_id")
|
|
|
|
.where("post_uploads.upload_id IS NULL")
|
|
|
|
.find_each do |u|
|
2013-06-21 15:34:02 +08:00
|
|
|
u.destroy
|
2013-06-20 03:51:41 +08:00
|
|
|
putc "."
|
|
|
|
end
|
|
|
|
end
|
|
|
|
puts "\ndone."
|
|
|
|
end
|