質問: Railsを使って管理者が画像ファイルや音声ファイルをアップして、それを第3者が確認できるというアプリを作っています。 機能としては、管理画面でアップしたものを別のトップページで確認できるというシンプルなものなのですが、ファイルの置き場所はどこに置くのが一般的なのでしょうか。 ファイルのアップにはCarrierwaveというgemを使っています。ファイルの保存先は/public/uploadsディレクトリとなっています。 この辺りから少し当方の知識もまだ足りていない部分で、 本番環境(heroku)でアプリを起動してファイルをアップしていっても、このディレクトリに保存されますよね? その場合のリスクなどはあるのでしょうか。 また、Amazon S3などのクラウドにファイルを置く方法もたくさんネットで見つかったのですが、やはりファイルはクラウドに置いて置く方がいいのでしょうか? クラウドにおいて置くメリットなども教えていただけると助かります。 よろしくお願い致します。
回答: herokuはDynoが再起動した時およびアイドル状態になった時にファイルが削除されてしまいますので、Amazon S3のような外部ストレージを使うしか方法がありません。 独自サーバーやVPSなどに本番環境を置く場合でも画像や音声のデータをユーザーが投稿できる場合はファイルの容量の増加の程度が予測しづらいため、やはりS3を使ったほうがいいでしょう。