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

时间:2016-01-15 00:02:09

标签: ruby-on-rails amazon-s3 carrierwave rails-activejob

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

1 个答案:

答案 0 :(得分:1)

我未能将ActiveJob传递给process_in_backgroundas specified here

仔细阅读repo确实帮助了我。