最近、ファイルをS3に直接アップロードするためのpluploadの設定を終了しました。これは、pluploadと組み合わせてS3s投稿方法を使用して行われます。
アップロードが完了した後、モデルをロードし、CarrierWaveのremote_ [uploader] _urlメソッドを使用して、アップロードされたリソースをモデルに割り当てる遅延ジョブをキューに入れます。複数のバージョンを管理するのが簡単なので、CarrierWaveを使用したいと思います。これが私の仕事です(少し編集しましたが、この簡単な例にsend_laterを使用できることに気付きました):
class MediaJob < Struct.new(:medium)
def perform
medium.process_file
medium.save
end
end
process_fileメソッドは次のとおりです。
def process_file
self.remote_file_url = s3_original_url
end
その結果、ファイルはS3に3回出入りすることになります。
1)pluploadを使用してS3にアップロード
2)処理のためにCarrierWaveによってダウンロードされます
3)モデルが保存されたときにCarrierWaveによって再アップロードされます
これはすべて、小さなファイルには適していますが、大きなファイルを処理する場合は非常にコストがかかります。#3を排除する方法がなければなりません。元のファイルはすでに存在するため、CarrierWaveが保存時に元のファイルをアップロードしないようにします。ただし、バージョンをアップロードしたいのですが。