discourse/lib/tasks/avatars.rake

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

50 lines
1.3 KiB
Ruby
Raw Permalink Normal View History

# frozen_string_literal: true
desc "Refresh all avatars (download missing gravatars, refresh system)"
task "avatars:refresh" => :environment do
i = 0
2014-06-27 01:50:16 +08:00
puts "Refreshing avatars"
puts
2014-06-27 01:50:16 +08:00
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
2014-06-27 01:50:16 +08:00
puts
end
desc "Clean up all avatar thumbnails (use this when the thumbnail algorithm changes)"
task "avatars:clean" => :environment do
i = 0
2014-06-27 01:50:16 +08:00
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
2019-04-25 22:49:52 +08:00
upload_id IN (SELECT uploaded_avatar_id FROM users)",
).pluck(:id)
optimized_image_ids.each do |id|
2018-02-23 20:45:07 +08:00
begin
optimized_image = OptimizedImage.find_by(id: id)
next if optimized_image.blank?
2018-02-23 20:45:07 +08:00
optimized_image.destroy!
rescue => e
puts "", "Failed to cleanup avatar (optimized_image id: #{id})", e, e.backtrace.join("\n")
2018-02-23 20:45:07 +08:00
end
putc "." if (i += 1) % 10 == 0
end
2014-06-27 01:50:16 +08:00
puts
end