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.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 がファイルをコピーしたり、元に戻したりするのはなぜですか?