経緯
Railsチュートリアルにて、
Herokuにデプロイ後、herokuのアプリにてApplication error。
チュートリアル本項目の流れとしては、アプリ内に画像アップロード機能の実装→本番環境にデプロイ(ストレージにAWS S3)です。
なかなか解決できない状況ですのでなんでもありがたいです。よろしければお力添えをお願いします。
前提
Railsチュートリアル通りに進行
Cloud9上での開発
本番環境Heroku
本番ストレージS3
環境変数はheroku config:setで直接設定、アプリケーションコード内にS3環境変数の参照設定。
問題と思われる箇所
aws-sdk-s3(S3を使用するためのGem)が既に起動されていて起動に失敗したとのエラーメッセージが表示されてしまう。
そのためアプリがS3にアクセスできず問題となっていると思うのですが、既に起動されていると言われている方のバージョン1.48台に関連するものがコード内に見当たらなかったです。色々と確認しましたが、そこの原因がわからないままです。
エラー
heroku logs --tail より
- aws-sdk-s3、1.48が既に存在していて起動できませんでした
/app/vendor/bundle/ruby/3.0.0/gems/bundler-2.2.33/lib/bundler/rubygems_integration.rb:332:in `block (2 levels) in replace_gem': can't activate aws-sdk-s3 (~> 1.48), already activated aws-sdk-s3-1.46.0. Make sure all dependencies are added to Gemfile. (Gem::LoadError)
- herokuアプリはクラッシュ
at=error code=H10 desc="App crashed" method=GET path="/" host=rails-summer-hibernation.herokuapp.com request_id=6bc58532-f27d-4145-b299-a851ab8295fc fwd="153.240.151.8" dyno= connect= service= status=503 bytes= protocol=https
heroku console run より
- S3に問題とのメッセージ
/app/vendor/bundle/ruby/3.0.0/gems/activestorage-6.0.4/lib/active_storage/service/configurator.rb:31:in `rescue in resolve': Cannot load `Rails.config.active_storage.service`: (RuntimeError) Missing service adapter for "S3"
heroku デプロイ時警告
- Railsの設定に問題
WARNING: remote: remote: Detecting rails configuration failed remote: set HEROKU_DEBUG_RAILS_RUNNER=1 to debug
heroku
エラー関連で確認したこと
-
ひととおりエラー内容で情報を検索
-
Gemfileの確認。設定してあったS3のGemバージョンは1.46.0。念の為、RailsチュートリアルのサンプルコードのGemfileとテキスト比較サイトで内容を比較 → 一致
-
既に起動されているということだったので、Gemlockのdependencyから変なものが入ってないか確認 → 特になし
-
環境内で"aws-sdk-s3"や"1.48"などを全文検索 → 関連してそうなものはなし
-
herokuの警告に対して、debug runnerを設定 → 変化せず 参照
その他試したこと
- IAM userやS3バケット、Herokuアプリを再作成して最初から設定し直し(始めは環境変数の設定の仕方や値のミスが問題かと思っていたのでしっかり確認しながら2度行いました)
- アクティブストレージ関連や、herokuのストレージ設定のドキュメントを確認して抜けているステップなどがないか確認
- IAM userのアクセス権限確認 → administrator
補足情報
- ローカル環境では、画像のアップロード含めて、全て問題なく動作
- テストはすべてパス
関連しているであろう箇所はできるだけ載せたつもりですが、情報や前提で脱けている所がありましたら、ご指摘いただけると幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/04/08 15:46 編集
2022/04/08 16:54
2022/04/10 01:32