# frozen_string_literal: true module Jobs class UpdateAnimatedUploads < ::Jobs::Scheduled every 1.hour MAX_PROCESSED_GIF_IMAGES ||= 200 def execute(args) Upload .where("extension = 'gif' OR (extension IS NULL AND original_filename LIKE '%.gif')") .where(animated: nil) .limit(MAX_PROCESSED_GIF_IMAGES) .each do |upload| uri = Discourse.store.path_for(upload) || upload.url upload.animated = FastImage.animated?(uri) upload.save(validate: false) upload.optimized_images.destroy_all if upload.animated end nil end end end