Вот моя проблема. Когда я создаю новое устройство, новая версия добавляется в мой загрузчик изображений. Затем я запускаю задание для воссоздания файлов для каждой записи MyModel. Sidekiq запускает работу, но не создает файлы. Я использую ActiveJob для объявления заданий.Проблема с динамической версией Carrierwave + Sidekiq, воссозданная в backgroud
Этот код
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