3

Я использую 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 скопировать файл вниз и обратно?

ответ

0

Мой подход был выигран. Даже если бы он сработал, он бы не добавил атрибут image_processing к модели Photo.

После копания в задержанной Paperclip API, следующий, кажется, сделал трюк:

Внутри PhotosController#create:

# Ensure we are flagged as processing 
@media_item.photo.prepare_enqueueing_for(:image) 

if @media_item.save 
    # Add Job 
    @media_item.photo.enqueue_delayed_processing 
end 

respond_with(:admin, @galleryable, @media_item) 

Я просил лучше API здесь: https://github.com/jrgifford/delayed_paperclip/issues/116