【发布时间】:2016-01-15 00:02:09
【问题描述】:
我正在使用 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 作为后端时,一切正常。
【问题讨论】:
标签: ruby-on-rails amazon-s3 carrierwave rails-activejob