我正在使用carrierwave
和carrierwave_backgrounder
在S3上存储图片,但将图片处理移至单独的工作人员。我的目标是使用ActiveJob内联队列在本地运行时立即处理图像,并在生产中使用Sidekiq。
我正在使用以下代码:
// models/user.rb
class User < ActiveRecord::Base
...
mount_uploader :cover_photo, CoverPhotoUploader
process_in_background :cover_photo
...
end
// uploaders/cover_photo_uploader.rb
class CoverPhotoUploader < ImageUploader
include CarrierWave::MiniMagick
include ::CarrierWave::Backgrounder::Delay
version :mobile do
process resize_to_limit: [380,nil]
end
end
// config/initializers/carrierwave_backgrounder.rb
CarrierWave::Backgrounder.configure do |c|
c.backend :active_job, queue: :carrierwave
end
当我尝试上传图片时,我得到:
NoMethodError (undefined method 'enqueue_active_job' for CarrierWave::Backgrounder:Module):
我不确定如何进一步调试这个。将backgrounder
切换为使用sidekiq
作为后端时,一切正常。