簡単な作業だと思ったことをしたい:
- 次のコントロールを含むフォームを用意します。
- 1ファイルのファイルアップロード
- このファイルを抽出するかどうかのチェックボックス
- リンク先のファイルを指定するテキスト入力 (チェックボックスがオンの場合にのみ必要) -
index_file
- フォーム送信後:
- チェックボックスがチェックされていない場合は、CarrierWave 経由で S3 の指定された場所にファイルをアップロードします。
store_dir
- チェックボックスがオンになっている場合は、アーカイブからすべてのファイルを抽出し (ZIP アーカイブのみを想定しています。ディレクトリ構造を維持する必要があります)、抽出したファイルを指定した場所にアップロードし、データベース内
store_dir
に設定index_file
します (データベースに何も保存する必要はありません)。その他の解凍ファイルについて)
- チェックボックスがチェックされていない場合は、CarrierWave 経由で S3 の指定された場所にファイルをアップロードします。
私が発見したように、Heroku の制限により、これは簡単な作業ではありません。これらのファイルはサイズが大きい (数百 MiB または数 GiB) ため、可能であれば S3 からこのファイルを再ダウンロードしたくありません。
Delayed Job または Resque を使用するとうまくいくと思いますが、その方法と問題の最善の解決策は正確にはわかりません。
できるだけ少ないリソースを使用してそれを解決する方法を知っている人はいますか? Heroku で変更できない場合は、CarrierWave を別のアップローダー (Paperclip など) とホスティング プロバイダーに変更できます。
CloudFlare を使用することも考えていましたが、これでも問題なく動作しますか?
回答ありがとうございます。