discourse/app/jobs/onceoff/fix_invalid_gravatar_uploads.rb
Robin Ward 93c25070fa
FIX: In FastImage 2.2.2 an error is raised with a nil path (#11954)
* FIX: In FastImage 2.2.2 an error is raised with a `nil` path

Sometimes Discourse.store.path_for would return `nil`, which the job
handled gracefully before, but raises an error with the new version of
the gem.

Note the logic of this job is a bit awkward since it depends on `nil`
being a string, but at least now it's no longer filling logs with
errors.

* Update app/jobs/onceoff/fix_invalid_gravatar_uploads.rb

Co-authored-by: Bianca Nenciu <nbianca@users.noreply.github.com>

Co-authored-by: Bianca Nenciu <nbianca@users.noreply.github.com>
2021-02-03 11:45:12 -05:00

19 lines
633 B
Ruby

# frozen_string_literal: true
module Jobs
class FixInvalidGravatarUploads < ::Jobs::Onceoff
def execute_onceoff(args)
Upload.where(original_filename: "gravatar.png").find_each do |upload|
# note, this still feels pretty expensive for a once off
# we may need to re-evaluate this
extension = FastImage.type(Discourse.store.path_for(upload)) rescue nil
current_extension = upload.extension
if extension.to_s.downcase != current_extension.to_s.downcase
upload&.user&.user_avatar&.update_columns(last_gravatar_download_attempt: nil)
end
end
end
end
end