LoginSignup
2
2

More than 1 year has passed since last update.

Railsチュートリアルでのherokuへのデプロイのエラー対処まとめ(第6版)【備忘録】

Posted at

背景

第6版の第1章で、githubへのpushまではすんなり進んだのですが、herokuにデプロイする際にエラーが多発したため、主に備忘録用のエラー対処まとめです。

前提条件

railsやgemのバージョンなどは基本的に「22年7月26日時点の第6版」で指定されている通りです。

エラー解決に必要だった処理や対処のまとめ

本題です。
エラー対処は大きく「1.デプロイ自体が失敗するエラー」を解決した後、「2.アプリケーションエラーの原因となるエラー」を解決するという流れでした。

1.デプロイ自体が失敗するエラー

1.Failed to install gems via Bundler

bundlerのバージョンがローカルとherokuで異なっていると発生するエラーのようです。
このエラーが出た際、エラーメッセージを辿っていくと

remote: -----> Installing bundler  2.3.10

といったメッセージが出ていますが、これがherokuのbundlerのバージョンです。
Gemfile.lockファイルの一番下に記載されているローカルのbundlerのバージョンとエラーメッセージのバージョンが異なっている場合、

$ gem uninstall bundler

でローカルのbundlerを一度アンインストールし、

$ gem install bundler --version '2.3.10' #herokuと同じバージョンを指定

でバージョンを指定してbundlerを再インストール。
最後に、Gemfile.lockファイルを更新するために

$ rm gemfile.lock #Gemfile.lockファイルを削除
$ bundle lock --add-platform x86_64-linux #再生成

でファイルを削除、再生成します。
この後

$ bandle install --without ‘production’

すればエラーが解決できるはずです。

2.Precompiling assets failed

このエラーの原因はエラーメッセージに

psych::badalias: unknown alias: default

とあるように、psychというgemの解釈の方法がバージョン3系と4系で変わっていることでした。なので

gemfile
gem 'psych', '~> 3.1'

とファイルの先頭に追加してやってbundle installすれば解決するはずです。
(※ちなみにrails 6.1.4以降ではこの問題は解決されているようです。)
(この二つを解決すると、とりあえずデプロイには成功するようになりました。)

2.アプリケーションエラーの原因となるエラー

1.Ruby Sass has reached end-of-life and should no longer be used.

sassというGemの寿命が来たことが原因のようです。
sass-railsのバージョンを6以降にすることで解決できます。

Gemfile
gem "sass-rails", "~> 6"

とsass-railsのバージョンを変更してやり、その後bundle installします。

2. H10appcrashed

デプロイには成功しているが、ビルドに失敗したと表示が出たため、

$ heroku logs --tail

でログを開いてみるとエラー表示。
さらに

$ heroku run concole

でコンソールを開こうとすると「H10appcrashed」のエラーメッセージ。
Ruby3.1で標準ライブラリからいくつかのライブラリが除外されたことが原因のため、rubyのバージョンを下げるか

Gemfile
gem 'net-imap'
gem 'net-pop'
gem 'net-smtp'

を手動で追加してbundle installしてやると解決しました。

まとめ

上記を一気に解決する場合、

Gemfile
# バージョンを3系に下げる
gem 'psych', '~> 3.1'

#ruby3.1と整合させるため
gem 'net-imap'
gem 'net-pop'
gem 'net-smtp'

をGemfileの先頭に追加して

Gemfile
gem "sass-rails", "~> 6"

と書き換え

$ gem uninstall bundler
$ gem install bundler --version '2.3.10' #herokuと同じバージョンを指定
$ rm gemfile.lock #Gemfile.lockファイルを削除
$ bundle lock --add-platform x86_64-linux #再生成
$ bandle install --without ‘production’

としてやります。

おまけ

heroku createで出たurlを踏んでも上手くページが表示されない

単純に間違えてgit push用のurlに飛んでいただけでした。
heroku createの際に生成されるもう一つのリンクが正しいurlです。

参考

https://logicoffee.hatenablog.com/entry/2018/09/04/160555
https://qiita.com/Bjp8kHYYPFq8MrI/items/90a9db03160f8d6f7e5c
https://qiita.com/kandalog/items/8fd20f79ecf73034795a
https://yumishin.com/heroku-push-error/#i
https://qiita.com/CoGee/items/2f509402dec47c820d32
https://s4na.hatenablog.com/entry/2021/02/22/004019
https://mophie-blog.com/2020/08/16/app-erro-in-heroku-h10-app-crashed/#toc2
https://qiita.com/li2003038/items/2d93b693fa5885c45276

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2