発生したエラー
git commitしたの後にgit push heroku masterを実行し、アプリをデプロイしようとしたところ、Rubyバージョンが2.6.3のためにheroku-20にデプロイできないという旨のエラー発生した。。
解決方法
解決策としてherokuのstackを20から18に下げる方法もあるが、今回はRubyのバージョンをheroku-20に対応している2.6.6に変更することで解決していく。Rubyのバージョンを2.6.6に変更する際の作業の流れは以下のようになる。
1.Rubyバージョンの確認し、Ruby2.6.6をインストール
terminal
$ rvm -v //rvmのバージョンとインストールされていることを確認
$ rvm list //インストール済みのRubyバージョンを確認
$ rvm install 2.6.6 //Rubyのバージョン2.6.6をインストール
2.Rubyの使用バージョンを2.6.6に変更し、デフォルトのバージョンも変更
terminal
$ rvm use 2.6.6 //使用するRubyバージョンを2.6.6に切り替える
$ rvm --default use 2.6.6 //デフォルトで使用するRubyバージョンを2.6.6に切り替える
$ rvm list //念のためRubyバージョンを確認し、2.6.6がcurrent && defaultなのを確認する
3.GemfileのRubyのバージョンを2.6.6に変更
Gemfile
ruby '2.6.6'
4.Gemfile.lockを削除し、再度bundle installを実行
terminal
$ rm Gemfile.lock //Gemfile.lockファイルを削除する
$ bundle install
5.変更したファイルの差分を反映するためGitコマンドを実行
terminal
$ git add .
$ git commit -m 'change ruby version'
$ git push heroku master
終わりに
- heroku-20に対応していないRubyバージョンを使用してデプロイしようとするとエラーが発生し、stackのバージョンを下げるよう提案される。
- herokuのstackバージョンを下げることで解決しようとすると、アプリのパフォーマンスが低下したり、stackのサポート終了日が早くやってきてしまうといったデメリットがある。そのためHerokuも推奨しているようになるべく最新のサポートバージョンのRubyを使用するのが無難みたいですね。。