У меня большие проблемы с попыткой заставить delayed_job работать с Amazon S3 и Paperclip.Есть несколько сообщений о том, как это сделать, но по какой-то причине это просто не работает для меня.Я удалил пару вещей из того, как это делают другие - изначально у меня было save (validations => false) в регенерате_стилей, но это, казалось, вызывало бесконечный цикл (из-за перехвата после сохранения), и не сделалкажется необходимым (так как URL были сохранены, только изображения не загружены).Вот соответствующий код из моего файла модели: submission.rb :
class Submission < ActiveRecord::Base
has_attached_file :photo ...
...
before_photo_post_process do |submission|
if photo_changed?
false
end
end
after_save do |submission|
if submission.photo_changed?
Delayed::Job.enqueue ImageJob.new(submission.id)
end
end
def regenerate_styles!
puts "Processing photo"
self.photo.reprocess!
end
def photo_changed?
self.photo_file_size_changed? ||
self.photo_file_name_changed? ||
self.photo_content_type_changed? ||
self.photo_updated_at_changed?
end
end
И мой маленький класс ImageJob, который размещается в нижней части файла submission.rb:
class ImageJob < Struct.new(:submission_id)
def perform
Submission.find(self.submission_id).regenerate_styles!
end
end
Насколько я могу судить, само задание создается правильно (так как я могу вытащить его из базы данных с помощью запроса).
Проблема возникает, когда:
$ rake jobs:work
WARNING: Nokogiri was built against LibXML version 2.7.8, but has dynamically loaded 2.7.3
[Worker(host:Jarrod-Robins-MacBook.local pid:21738)] New Relic Ruby Agent Monitoring DJ worker host:MacBook.local pid:21738
[Worker(host:MacBook.local pid:21738)] Starting job worker
Processing photo
[Worker(host:MacBook.local pid:21738)] ImageJob completed after 9.5223
[Worker(host:MacBook.local pid:21738)] 1 jobs processed at 0.1045 j/s, 0 failed ...
Затем задача rake застревает и никогда не завершается, а сами изображения, по-видимому, не были повторно обработаны.
Любойидеи?
РЕДАКТИРОВАТЬ: просто еще один момент;то же самое происходит с герою, а не только на месте.