Я по существу записываю проект в Railscast 383 - вторая часть, когда фотография загружается непосредственно в AWS S3, а затем фотография обрабатывается в фоновом режиме Sidekiq для создания миниатюрной версии фотографии. Я на Rails 4.Sidekiq повторяет ту же работу снова и снова
Моя проблема заключается в том, что работа Sidekiq после успешного завершения повторяется снова и снова, а не просто останавливается.
Куда я иду не так? Я не вижу никакой разницы между моим кодом и что на Railscast, кроме я на Rails 4 (так сильные параметры вместо attr_accessible
)
класс Фото:
class Photo < ActiveRecord::Base
mount_uploader :image, ImageUploader
default_scope order('updated_at DESC')
after_save :enqueue_image
def image_name
File.basename(image.path || image.filename) if image
end
def enqueue_image
ImageWorker.perform_async(id, key) if key.present?
end
end
ImageWorker:
class ImageWorker
include Sidekiq::Worker
sidekiq_options retry: false
# sidekiq_options retry: 3
def perform(id, key)
photo = Photo.find(id)
photo.key = key
photo.remote_image_url = photo.image.direct_fog_url(with_path: true)
photo.save!
photo.update_column(:image_processed, true)
end
end
Добавил:
class ImageUploader < CarrierWave::Uploader::Base
include CarrierWaveDirect::Uploader
include CarrierWave::RMagick
# storage :fog
#### storage defaults to fog when CarrierWaveDirect::Uploader is included ####
include CarrierWave::MimeTypes
process :set_content_type
version :thumb do
process :resize_to_limit => [200, 200]
end
version :medium do
process :resize_to_limit => [400, 400]
end
end