質問: pdf0 + pdf1 4. pdf2 を send_file このように実装をするとき、おそらく、 pdf1 と pdf2 は動的にファイルを生成する必要がありそうだ、と思っています。 pdf ファイルを動的に生成するということは、 rails はウェブアプリケーションなので、同期(排他制御)の問題がでてくるかと思っています。 ### 質問 * pdf ダウンロード機能実現のために、生成される中間・最終 pdf ファイルをサーバーのどこかに保存しておきたいと思っています。これは、ダウンロードが完了すればそれ以上必要のないファイルです。このようなファイルは、どこに生成しておくのが、 rails 的には良いのでしょうか?
回答: > > ダウンロードが完了すればそれ以上必要のないファイルです。このようなファイルは、どこに生成しておくのが、 rails 的には良いのでしょうか? > > > 1つの物理サーバーにrailsアプリを載せるようなシンプルな構成であれば、`Rails.root`直下の`tmp`で良いと思います。 ただ、railsアプリの新しいバージョンのdeploy後(`Rails.root`全体が切り替わった場合)も生成済のファイルをダウンロード可能としたいのであれば、OS側の容量の許すディレクトリ(linuxの場合`/tmp`や`/var/tmp`、または、railsアプリ専用ディレクトリ)に生成すれば良いと思います。 また、複数の物理サーバーにrailsアプリを載せるような構成の場合は、物理サーバー間で共有できるディレクトリに生成する必要があると思います。(クラウドであれば、`S3`などに格納し、`send_data`を使ってダウンロードする) いずれにしても、非同期にファイルを生成する方式に何を採用するかは不明ですが、生成したファイルのパスが一意になるようにする必要があると思います。