git push heroku masterができた話

ようやくherokuとお友達になれました

多分普通にQiita等々で上がっている通りにやれば

git push heroku master

と打ってやれば、herokuにpushできるはずですが、僕が出たエラーとしては、

 

remote:  !

remote:  !     An error occurred while installing ruby-2.3.1

remote:  !     

remote:  !     This version of Ruby is not available on Heroku-18. The minimum supported version

remote:  !     of Ruby on the Heroku-18 stack can found at:

remote:  !     

remote:  !     https://devcenter.heroku.com/articles/ruby-support#supported-runtimes

remote:  !

 

これです。

エラーを読むと、herokuさんでサポートしているrubyの最小のversionよりも開発環境で使用している、rubyのバージョンが小さいと怒られています。

つまり、rubyのバージョンを挙げてやればいいのです。

 

現在のrubyのバージョンを調べてやる(ruby -v)と、なんと、2.3.1。。。これは驚愕です。。。herokuさんの公式ドキュメントによるとrubyのバージョンは最低でも2.4.5は必要らしいので、そりゃエラーが出ますよね。

ここでrubyをどこで何で管理していたのかを完全に忘れてしまったので、調べます(which ruby)。

~/.rbenv/shims/ruby

が返ってきて、rbenv(アールビーエンブ)で管理しているということがわかります。 (勝手にrvmで管理していると思ってた。。。)

次に、rbenvでインストールすることがでrubyのバージョンを調べます(rbenv install -l)。

すると大量のAvailable versionが表示されます。ここでrbenv install 2.5.0を叩いてやると、なぜかalertされたので、2.5.3を叩き直すと、無事2.5.3バージョンのrubyがインストールされました。

 

今の段階で、rbenvの管理下には2.3.1と2.5.3のrubyがあり、2.3.1を利用するという設定になっているので、2.5.3に切り替えてやります(rbenv local 2.5.3)。

 

ここでrailsのファイルの中にある、gemファイルの中の、rubyのバージョン指定も2.3.0から2.5.3に書き換えてやります。

それからbundle installをしてやればokと思いきや

`find_spec_for_exe': can't find gem bundler (>= 0.a) with executable bundle (Gem::GemNotFoundException)

というエラーが出ました。

これはbundler周りなので、一旦gem uninstall bundlerを叩いてやり、

Gem 'bundler' is not installed

が返ってきたので、

gem install bundler -v 1.17.3(現段階で2.0...をのぞいて最新のもの)を叩いてやりました。

これでもう一度bundle installを叩いてやればokです。

git commit -m "   "を叩いて、

git push heroku masterしてやればできました。

 

 

ちなみに、git push heroku masterした後に、heroku上で動かすためには、heroku上のデータベースもマイグレイトしてやる必要があるので、

heroku run rails db:migrate を叩いてやりましょう