【Rails】ローカル環境でS3の画像投稿ができるのに、Heroku上でS3に切り替わらない問題
現象
ローカル環境でうまくS3に画像を保管出来た!!
しかし、Heroku側にマージしてもなぜかHerokuのDB上で画像を保管している。。。
エラーも出ない。。
なぜだろうか。。。
原因
今思えば当たり前の話なのですが、、
原因は本番環境用(Heroku)のファイルにActiveStorageの設定をしていないというものでした。
種類 | 環境 | 設定ファイル |
---|---|---|
開発環境 | ローカル環境 | development.rb |
本番環境 | Heroku | production.rb(⇦こっちに設定入れてなかった) |
** 同じミスをしないように手順を残しておきます **
ローカル環境での設定(※aws側の設定は割愛)
①S3を使用するために必要なGemfileを導入
Gemfile.
gem "aws-sdk-s3", require: false
②追記したら、ターミナルにて開発中のアプリに入り「bundle install」を実行
ターミナル.
% bundle install
③development.rbとstorage.ymlファイルも更新
config/environments/development.rb
# S3にて保存されるように設定を変更
# config.active_storage.service = :local
config.active_storage.service = :amazon
config/storage.yml
# S3の設定を追記
amazon:
service: S3
region : ap-southeast-1 # リージョンをaws側で確認して記載
bucket : furimabucket # バケット名をaws側で確認して記載
access_key_id: <%= ENV['AWS_ACCESS_KEY_ID'] %>
secret_access_key: <%= ENV['AWS_SECRET_ACCESS_KEY'] %>
④環境変数の追記
gem "aws-sdk-s3", require: false
% bundle install
# S3にて保存されるように設定を変更
# config.active_storage.service = :local
config.active_storage.service = :amazon
# S3の設定を追記
amazon:
service: S3
region : ap-southeast-1 # リージョンをaws側で確認して記載
bucket : furimabucket # バケット名をaws側で確認して記載
access_key_id: <%= ENV['AWS_ACCESS_KEY_ID'] %>
secret_access_key: <%= ENV['AWS_SECRET_ACCESS_KEY'] %>
③のstorage.ymlにて「AWS_ACCESS_KEY_ID」「AWS_SECRET_ACCESS_KEY」を設定しているので開発中のアプリにて環境変数を追記。
% vim ~/.zshrc
「i」で編集モードにして2つの変数を登録
export AWS_ACCESS_KEY_ID="Access key IDの値"
export AWS_SECRET_ACCESS_KEY="Secret access keyの値"
編集が終わったら、[ESC]→:wqで終了
続いて、環境変数の設定ファイルを読み込み直す
% source ~/.zshrc
これで、ローカル環境でS3の画像投稿ができた!!!!!!
以降は、本番環境(Heroku)への反映手順となります。
本番環境(Heroku)への反映
①まずは忘れずにproduction.rbの更新
storage.ymlは特に変更なし。
# 本番環境でもS3にて保存されるように設定
config.active_storage.service = :amazon
②ターミナルにてHerokuにログイン
% heroku login --interactive
③本番環境でも環境変数を設定
環境変数を確認したい場合は「% heroku config」
% heroku config:set AWS_ACCESS_KEY_ID="Access key IDの値"
% heroku config:set AWS_SECRET_ACCESS_KEY="Secret access keyの値"
④あとはコミットして完了
% git add .
% git commit -m "ストレージの変更(S3)"
% git push heroku master
お疲れ様でした。
Author And Source
この問題について(【Rails】ローカル環境でS3の画像投稿ができるのに、Heroku上でS3に切り替わらない問題), 我々は、より多くの情報をここで見つけました https://qiita.com/sucatman/items/c70a4cac2472aa701ff2著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .