Время от времени задание увеличивает попытку и не выполняет метод regenerate_styles
.Я заметил, что, если я передам метод rengerate_styles
вручную тому, что не удалось, - 100% времени всегда решает проблему.
Так что, если изображение не обрабатывается, и я передаю:
Photo.find(image).regenerate_styles!
Работает как положено.
Можно ли написать обратный вызов, который обнаружит неудачную попытку и запустит метод?Или есть что-то в этом коде, отличающее то, почему оно не будет обрабатываться некоторое время.
модель
after_save do |image|
if image.source_changed?
Delayed::Job.enqueue PhotoJob.new(image.id)
end
end
def regenerate_styles!
self.photo.reprocess!
self.processing = false
self.save(false)
end
фотодействие
class PhotoJob < Struct.new(:image_id)
def perform
Photo.find(self.image_id).regenerate_styles!
end
end