投稿

ラベル(AWS)が付いた投稿を表示しています

【Rails6】herokuで投稿した画像が表示されない

この記事の概要 herokuの無料プラン(Free)プランを使ってると、更新ボタンを久方ぶりに押した時などにアップロードしたはずの画像が消えるよねーって話と、その解決策。 Railsで作成したアプリケーションにActive Storageと、Amazon S3を導入する方法で、どうやって実装していけばいいかを解説する。 目次 この記事の概要 目次 仕様 画像が消える問題 対処法 参考文献 解決策 仕様 ・mac OS Catarina バージョン10.15.1(2017モデル) ・Rails 6 ・heroku Rails 6で作成したWebアプリケーションをherokuのフリープランでアップロードしたという前提で話します。 herokuは有料プランではなく、無料プランのFreeで登録しているとします。 画像が消える問題 herokuへのwebアプリケーションのアップロードが済んだ日の翌日、localhost:3000にアクセすると、どうやら画像が表示されていない...。 試しに適当な画像を一枚選んで再アップロードしてみたら、きちんと表示される。 どうやら、画像が投稿されてしばらく経つと、画像が勝手に消去されるらしい。なぜだろう。 対処法 ・画像が消える理由 herokuのリポジトリがdynoという単位で管理されており、Freeプランだと一定時間経過後にdynoが再起動される仕様になっているから。 →つまり、再起動されるたびに保存されているファイルは消去される。 ・では、どうすればいい? 手順をざっくり解説すると、こうなる。 ①AWSコンソール( こちら:https://aws.amazon.com/jp/console/ )にアクセスし、「S3」を選択。 ②「S3」で、新しいバケットを作成し、自分のトークンIDとアクセスキーを取得。 ③aws-sdk-s3というgemをインストールし、vim上でcredientalファイルにIDとキーを記述する。 ④$heroku buildpacks:add https://github.com/heroku/heroku-buildpack-activestorage-preview ...