CarrierWave::Backgrounder:Module 的未定义方法 `enqueue_active_job')

undefined method `enqueue_active_job' for CarrierWave::Backgrounder:Module)

我正在使用 carrierwavecarrierwave_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 作为后端时,一切正常。

我未能将 ActiveJob 传递给 process_in_backgroundas specified here

看完这个 repo 对我很有帮助。