3

S3への直接アップロードと一緒にDelayed Paperclipを使用しています。私のモデルは と呼ばれPhoto、その添付ファイルはimageです。

画像は、Photo フォームから JavaScript を使用して S3 にアップロードされます。ファイルは、Paperclip が元の画像があると想定する場所に保存され、ファイルの詳細は隠しフィールドに保存されます。フォームが送信されると、これらの属性が Photo モデルに書き込まれます。

image_file_name image_file_size image_content_type

これらの属性を書き込むだけでは、Delayed Paperclip をトリガーして画像を処理するのに十分ではないように思われるため、これPhoto.saveを呼び出しPhoto.image.reprocess!た後、DelayedPaperclip を取得して、画像を正常に処理する新しい Sidekiq ジョブを作成します。

問題は、 を呼び出すPhoto.savePhotosController、ファイルがtempS3 からディレクトリにコピーされ、次に 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 がファイルをコピーしたり、元に戻したりするのはなぜですか?

4

1 に答える 1

0

image_processing私のアプローチは不安定でした.たとえそれが機能したとしても、属性をPhotoモデルに追加することはできませんでした.

Delayed 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_pa​​perclip /issues/116

于 2014-11-25T22:09:38.107 に答える