Railsチュートリアル 第13章画像投稿機能 本番環境でのエラー
Q&A
Closed
解決したいこと
初投稿のため至らぬところも多々あるかと思いますが、以下ご教示いただきたくお願いいたします。
Railsチュートリアルの第13章、画像投稿機能実装後にherokuへデプロイをしたのですが、アプリがクラッシュしているようでエラー画面が出てきます。
開発環境では正常に動いており、テストもパスしてますので、本番環境のみのエラーだと思います。
Rails学習中であり、Progateで一通り勉強したのちにチュートリアルをコツコツ進めてきました。今までもなんとかエラー文をググったりしてエラーは乗り越えてきたのですが、今回は糸口が掴めず皆様に知恵をお貸しいただこうと思い投稿に至りました。
発生している問題・エラー
herokuでの本番環境のアプリがクラッシュしており、エラー画面が表示されます。
・heroku logs --tailの実行結果
buntu:~/environment/sample_app (user-microposts) $ heroku logs --tail
2022-05-17T22:48:15.881693+00:00 app[web.1]: from /app/vendor/bundle/ruby/3.0.0/gems/bundler-2.3.10/lib/bundler/cli.rb:25:in `start'
〜中略〜
/app/vendor/bundle/ruby/3.0.0/gems/bundler-2.3.10/exe/bundle:36:in `<top (required)>'
2022-05-17T22:48:15.889692+00:00 app[web.1]: from /app/bin/bundle:113:in `load'
2022-05-17T22:48:15.889700+00:00 app[web.1]: from /app/bin/bundle:113:in `<main>'
2022-05-17T22:48:16.008327+00:00 heroku[web.1]: Process exited with status 1
2022-05-17T22:48:16.073437+00:00 heroku[web.1]: State changed from starting to crashed
・heroku run rails consoleの実行結果
ubuntu:~/environment/sample_app (user-microposts) $ heroku run rails console
› Warning: heroku update available from 7.60.1 to 7.60.2.
Running rails console on ⬢ <※アプリ名が入ってます>... up, run.3990 (Free)
/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"
(〜中略〜)
/app/vendor/bundle/ruby/3.0.0/gems/bootsnap-1.10.3/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:27:in `require': cannot load such file -- webrick/httputils (LoadError)
・・・
自分で試したこと
エラー文で検索しましたが、ピンポイントでヒットする内容はなさそうでした。
ヒントや怪しい箇所などあればご教示いただけますと幸いです。
本番環境だけでのエラーなので、AWSのS3の設定周りでうまくいってないのかなと推測しています。
何卒よろしくお願いいたします。
<試したこと>
・migrateとseedを再度実行
・run rails consoleでエラー内容確認、ググるもわからず
・heroku restartの実行
・herokuのアクセスキーなどの確認:うまく設定されてないのかなど思いherokuのsettingから確認するもちゃんと設定されていそう
・Gemの変更:チュートリアルの途中で追加したgem 'aws-sdk-s3'のバージョンが'1.46.0'であったのを'1.48.0'に変更(記事でバージョン違いが影響しているのかもという内容があった)
#
source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }
gem 'rails', '6.0.4'
gem 'aws-sdk-s3', '1.46.0', require: false #追加
gem 'image_processing', '1.9.3'
gem 'mini_magick', '4.9.5'
.
.
.
・storage.ymlのストレージオプションでENV変数を使ったところが上手くできていないのかと思い、直接キーを書き込んでみた(本来避けるべきなのは承知しております)
test:
service: Disk
root: <%= Rails.root.join("tmp/storage") %>
local:
service: Disk
root: <%= Rails.root.join("storage") %>
amazon:
service: S3
access_key_id: <%= ENV['AWS_ACCESS_KEY'] %> #ここのENV以下を直接書く
secret_access_key: <%= ENV['AWS_SECRET_KEY'] %> #ここのENV以下を直接書く
region: <%= ENV['AWS_REGION'] %> #ここのENV以下を直接書く
bucket: <%= ENV['AWS_BUCKET'] %> #ここのENV以下を直接書く