2015-04-27 4 views
0

У меня есть приложение rails, в котором пользователь может загружать изображения, которые затем будут изменены в фоновом режиме и отправлены по электронной почте. Я использую carrierwave и в моем методе perform_asycn, я передаю в tempfile/path моему сотруднику sidekiq, однако, я получаю сообщение об ошибке, что файл не exsist.с помощью sidekiq и Rmagick для изменения изображений, загруженных с помощью несущей волны в фоновом режиме

контроллер

ImageWorker.perform_asycn(params["image"].tempfile.path) 

класс ImageWorker

def perform(path) 
    avatar = ImageList.new(path).last 
#do other stuff 
end 

Я получаю ошибку ImageMagick говоря, не может открыть файл: Нет такого файла или каталога. Чтобы проверить, я попытался использовать Rmagick в контроллере, прежде чем передать аргумент пути работнику, и все работает нормально. Я предполагаю, что несущая волна избавляется от файла, как только он передает его из контроллера, но я не знаю, как я могу получить доступ к файлу, который я хочу в рабочем работнике sidekiq.

ответ

1

Это появляется, потому что ваш временный файл был удален после завершения запроса. Итак, у вас, работника, вы пытаетесь открыть файл, который был удален.

Итак, в вашем случае я рекомендую использовать carrierwave_backgrounder. Он должен правильно обрабатывать этот случай.

Смежные вопросы