動的に生成された大規模なアセットとHerokuのホスティングについて質問があります。
私のアプリは、24 時間ごとに 1 回生成される大きなファイル (>100 MB) で構成される、基になるデータのサブセットの一括ダウンロードを提供します。サーバー上で実行している場合は、ファイルをパブリック ディレクトリに書き込むだけです。
しかし、私が理解しているように、これは Heroku では不可能です。/tmp ディレクトリに書き込むことはできますが、そこにあるファイルの保証された有効期間は、バックグラウンド ジョブではなく、1 つの要求と応答のサイクルに関して定義されているようです。
S3 を使用してダウンロード ファイルをホストしたいと考えています。S3 gemはストリーミング アップロードをサポートしていますが、ローカル ファイルシステムに既に存在するファイルに対してのみです。コンテンツのサイズを事前に知る必要があるようですが、私の場合は不可能です。
つまり、これはキャッチ 22 のように見えます。S3 にアップロードするときにメモリ内に巨大な文字列が作成されるのを避けようとしていますが、S3 はローカル ファイルシステムに既に存在するファイルのストリーミング アップロードのみをサポートしています。
ローカル ファイルシステムに書き込めない Rails アプリがある場合、メモリ内に大きな文字列を作成せずに、毎日生成される大きなファイルを提供するにはどうすればよいですか?