【heroku】railsをデプロイした時に出たエラー

発生経緯

Vueの勉強がてらローカルで作っていたrailsアプリをherokuにデプロイしようとコマンドを叩いた。

$ git push heroku origin

すると見たことのないエラーが発生

remote: -----> Detecting rake tasks
remote: 
remote:  !
remote:  !     Could not detect rake tasks
remote:  !     ensure you can run `$ bundle exec rake -P` against your app
remote:  !     and using the production group of your Gemfile.
remote:  !     Activating bundler (2.0.1) failed:
remote:  !     Could not find 'bundler' (2.0.1) required by your /tmp/build_6b1f695b994476ef74ee9e7d5cc6b6f0/Gemfile.lock.
remote:  !     To update to the latest version installed on your system, run `bundle update --bundler`.
remote:  !     To install the missing version, run `gem install bundler:2.0.1`
remote:  !     Checked in 'GEM_PATH=vendor/bundle/ruby/2.5.0', execute `gem env` for more information
remote:  !     

出てくることは少ないかもしれないけど、忘れないようにメモ。

とりあえずエラーの中身確認

どうもbundlerをインストールせいと言っているので、先ずはバージョン確認。

$ bundler -v
Bundler version 2.0.1

あれ?あってる… ってことはrailsのバージョンとbundlerのバージョンがheroku推奨とアンマッチの可能性がある。

解決手法

というわけで、railsとbundler両方ともアップデートをかけることにする。

$ brew update && brew upgrade ruby-build
$ rbenv install 2.6.3
# railsは他でも使っているので、ひとまず適用させたいフォルダのみバージョン変更
$ rbenv local 2.6.3
# bundlerも最新のやつを入れておく
$ gem install bundler -v 2.0.2
# このまま入れるとgemfileが書き変わらないので、一旦削除
$ rm Gemfile.lock
$ bundle install

ここまで行うと .ruby-version が新たに作られるので、忘れずに .gitignore に追加しておく。 gitにpushし終えたら再びデプロイトライ。

$ git push heroku origin
remote: Verifying deploy... done.
 * [new branch]      master -> master

無事デプロイ完了!

デプロイまでしたら

DBを作るのを忘れがちなので、気をつける!

$ heroku run rails db:migrate

これで、無事にサイトが表示できるようになった。