【Rails】Rails6が起動できないので今更Rails5を構築した

Rails6を使おうとしたら、尽くError: uninitialized constant URI::Genericというエラーが出て、Rails new も rails s も動かなかったので、諦めてRails5に環境を戻しました。(細かい理由は後書きに記載します。)

1. 初めにrubyのバージョンを落とす(任意?)
過去に使っていたプロジェクトにメモしてあったRubyのバージョンに一応戻しました。
(目的に合わせて下の二行目の local は global にしてください)

$ rbenv install 2.3.1
$ rbenv local 2.3.1

2. bundler, nokogiri, sprocketsを予めインストール
バージョンは2016年ごろのものにしています。(2019年以降のものだと対応してるか怪しかったため)

$ gem install bundler -v1.13.0
$ gem install nokogiri -v1.6.8
$ gem install sprockets -v3.7.2

3. rails5 をインストールします
今回はRails5.1.6をインストールします。(既に最新のRailsをインストールしている方は、一旦それを削除してRails5を入れると安心です)

$ gem install rails:5.1.6

以上です。これで後はrails new なり何なりします。

多分初めからRails5 を入れる場合は、他にも対応してないgemが出てくると思うので、その都度前バージョンのgemを入れてください。

後書き

Rails6の起動時のエラー「Error: uninitialized constant URI::Generic」がについては色々調べて試してみたのですが、尽く全てダメでした。一つこちらの記事にMacOSを新しくしたらできたとあったので、もしかすると私のMacOSが古かったのが原因なのかもしれませんね?(MacBookPro13-inch, Mid 2012 / MacOS10.15.7 Catalina)

2. bundler, nokogiri, sprocketsを予めインストール」を行った理由ですが、先にRails5をインストールしようとすると、下記のようなエラーに遭遇します。

ERROR:  Error installing rails:
sprockets requires Ruby version >= 2.5.0.

多分、Railsに必要なgemの指定にバージョンが記載されていないのだと思います。
なので、最新のnokogiriやsprocketsをインストールしようとして、Rubyのバージョンとの互換性が取れなくなってしまうのでしょう。
仕方がないので、バージョンの古い(というかRails5が現役であったであろう期間・もしくはrubyの指定バージョンの時期)bundler, nokogiriやsprocketsを事前にインストールしてあげました。
これで問題なく動くはずです。

OSのバージョンでダメなんてことがあるのでしょうか…
そろそろRails卒業してDjangoとかに乗り換えようかなぁ…

参考サイト