0
這是我的問題。 當我創建新設備時,新版本會添加到我的圖片上傳器中。 然後我運行一個作業爲每個MyModel記錄重新創建文件。 Sidekiq開始工作,但它不創建文件。 我使用ActiveJob來聲明作業。Carrierwave + Sidekiq動態版本問題,在背景中重新創建
此代碼
MakingNewVersionImagesJob.perform_later("some_recently_added_device_name")
Sidekiq重啓後在控制檯工作正常。 我覺得Sidekiq沒有看到MyModel的變化。 我對不對?這裏有解決方案嗎?
注意:它工作正常,當我在控制器直接做,而不是在後臺
class BaseImageUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
# Config/versions ...
def self.add_version(name, width, height)
version name do
process resize_to_fit: [width, height]
end
end
end
class MyModelImageUploader < BaseImageUploader
# blabla
end
class MyModel < ActiveRecord::Base
#...
mount_uploader :image, MyModelImageUploader
end
class Device < ActiveRecord::Base
after_create :add_uploaders_versions
def add_uploaders_versions
version = self.name.downcase.to_sym
MyModelImageUploader.add_version(version, self.width, self.height)
end
end
class MakingNewVersionImagesJob < ActiveJob::Base
queue_as :regular
def perform(version)
MyModel.find_each do |record|
record.image.recreate_versions!(version.to_sym)
record.save!
end
end
end
class DevicesController < ApplicationController
#...
def create
@device = Device.new(device_params)
if @device.save
MakingNewVersionImagesJob.perform_later(@device.name.downcase)
#...
end
end
end