Я использую Delayed Paperclip вместе с прямой загрузкой на S3. Моя модель называется Photo
, а ее приложение - image
.Использование Delayed Paperclip с S3 Прямая загрузка
Изображения загружаются на сайт S3, используя JavaScript из формы Фото. Файл хранится в папке, в которой Paperclip ожидает, что исходное изображение будет расположено, а данные файла будут сохранены в скрытые поля. Когда форма представляется, эти атрибуты записываются в модели Фото:
image_file_name image_file_size image_content_type
Потому что писать в одиночку эти атрибуты, кажется, не достаточно, чтобы вызвать Delayed Скрепка для обработки изображения, после Photo.save
я называю Photo.image.reprocess!
который получает DelayedPaperclip для создания новой работы Sidekiq, которая успешно обрабатывает изображение.
Проблема заключается в том, что когда я вызываю Photo.save
в PhotosController
, файл копируется в каталог temp
из S3, а затем обратно на S3. Это происходит вне работы и блокировки:
[paperclip] copying image_assets/grab-original.tiff to local file /var/folders/bv/x495g9g10m7119680c9ssqmr0000gn/T/94943834d26bcb8b471f4eeb2a7f899d20141125-3895-1oqom7l
[AWS S3 200 2.601589 0 retries] get_object(:bucket_name=>"example-com-development",:key=>"image_assets/grab-original.tiff")
[paperclip] saving image_assets/grab-original.tiff
[AWS S3 200 2.47114 0 retries] put_object(:acl=>:public_read,:bucket_name=>"example-com-development",:cache_control=>"max-age=29030400",:content_length=>534472,:content_type=>"image/tiff",:data=>Paperclip::AttachmentAdapter: grab.tiff,:key=>"image_assets/grab-original.tiff")
Почему Paperclip скопировать файл вниз и обратно?