はじめに
HerokuのStackをバージョンアップしようとして、エラーになったので、
作業記録としても、対応作業しながら投稿。
#経緯
Stackを最新バージョンのHeorku-18に更新し、デプロイしようとしたところ、次のエラーが発生。
! This version of Ruby is not available on Heroku-18. The minimum supported version
! of Ruby on the Heroku-18 stack can found at:
!
! https://devcenter.heroku.com/articles/ruby-support#supported-runtimes
!
! Push rejected, failed to compile Ruby app.
! Push failed
原因は、Rubyが2.4.1だったからの模様。
↑のURLを見るとわかるが、サポートは2.4.5
#対応手順
##1. Rubyバージョンアップ
###1-1. Ruby2.4.5インストール
私の環境では、rbenvでRubyを管理しているため、rbenvでRubyのバージョンアップを試みる。
$ rbenv install 2.4.5
ruby-build: definition not found: 2.4.5
See all available versions with `rbenv install --list'.
If the version you need is missing, try upgrading ruby-build:
brew update && brew upgrade ruby-build
無いと言われる?!
調べたところ、rbenvのバージョンが古いらしい。
参考:https://qiita.com/_kanacan_/items/c1499f6c13b1c41da982
###1-2. rbenvのバージョンアップ
$ brew upgrade rbenv ruby-build
$ rbenv install -l
中略
2.4.1
2.4.2
2.4.3
2.4.4
2.4.5
2.5.0-dev
2.5.0-preview1
2.5.0-rc1
2.5.0
2.5.1
2.5.2
2.5.3
あった!!!
というわけで、再度インストール
$ rbenv install 2.4.5
ruby-build: use openssl from homebrew
Downloading ruby-2.4.5.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.5.tar.bz2
Installing ruby-2.4.5...
ruby-build: use readline from homebrew
Installed ruby-2.4.5 to /Users/{user_name}/.rbenv/versions/2.4.5
#2. プロジェクトに適用
Rubyがインストールできたので、各プロジェクトに適用していきます。
プロジェクトのディレクトリに移動後、
##2-1. rbenvの設定変更
$ rbenv local 2.4.5
$ rbenv versions
system
2.4.1
* 2.4.5 (set by /{project_dir}/.ruby-version)
##2-2. Railsプロジェクトに適用
$ bundle install
rbenv: bundle: command not found
The `bundle' command exists in these Ruby versions:
2.4.1
Rubyごとにbundleを入れ直さないと行けない模様。
$ gem install bundler
Fetching: bundler-1.17.2.gem (100%)
Successfully installed bundler-1.17.2
Parsing documentation for bundler-1.17.2
Installing ri documentation for bundler-1.17.2
Done installing documentation for bundler after 12 seconds
1 gem installed
$ bundle install
Your Ruby version is 2.4.5, but your Gemfile specified 2.4.1
Gemfileを変えなきゃいけなかったので、変更後再度!
$ bundle install
完了!!!