discourse/lib/tasks/avatars.rake
Sam Saffron 30990006a9 DEV: enable frozen string literal on all files
This reduces chances of errors where consumers of strings mutate inputs
and reduces memory usage of the app.

Test suite passes now, but there may be some stuff left, so we will run
a few sites on a branch prior to merging
2019-05-13 09:31:32 +08:00

47 lines
1.2 KiB
Ruby

# frozen_string_literal: true
desc "Refresh all avatars (download missing gravatars, refresh system)"
task "avatars:refresh" => :environment do
i = 0
puts "Refreshing avatars"
puts
User.find_each do |user|
begin
user.refresh_avatar
user.user_avatar.update_gravatar!
rescue => e
puts "", "Failed to refresh avatar for #{user.username}", e, e.backtrace.join("\n")
end
putc "." if (i += 1) % 10 == 0
end
puts
end
desc "Clean up all avatar thumbnails (use this when the thumbnail algorithm changes)"
task "avatars:clean" => :environment do
i = 0
puts "Cleaning up avatar thumbnails"
puts
optimized_image_ids = OptimizedImage.where("upload_id IN (SELECT custom_upload_id FROM user_avatars) OR
upload_id IN (SELECT gravatar_upload_id FROM user_avatars) OR
upload_id IN (SELECT uploaded_avatar_id FROM users)").pluck(:id)
optimized_image_ids.each do |id|
begin
optimized_image = OptimizedImage.find_by(id: id)
next unless optimized_image.present?
optimized_image.destroy!
rescue => e
puts "", "Failed to cleanup avatar (optimized_image id: #{id})", e, e.backtrace.join("\n")
end
putc "." if (i += 1) % 10 == 0
end
puts
end