discourse/app/jobs/scheduled/update_animated_uploads.rb
Alan Guo Xiang Tan 322a3be2db
DEV: Remove logical OR assignment of constants (#29201)
Constants should always be only assigned once. The logical OR assignment
of a constant is a relic of the past before we used zeitwerk for
autoloading and had bugs where a file could be loaded twice resulting in
constant redefinition warnings.
2024-10-16 10:09:07 +08:00

25 lines
634 B
Ruby

# 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