2021年8月にRuby on Rails チュートリアルの環境構築
Ruby on Rails チュートリアルを2021年8月に始めようとした。
いろいろとつまずいたので私の解決までの思考回路をメモする。
要約
最新のRubyを使ってbundle update
をやろうとしたら無理だった。
いい感じに低いバージョンのRubyを使えばうまくいった。
注意
- 私は、情報系の大学院生なので、現場のことなど知らないです。
- 私はOracle VM VirtualBox上にインストールしたUbuntuで作業しています。つまり、うまくいかなかったらOSのインストールからやり直せばいいと思ってます。本番環境でマネをしないようにしてください
新しいRubyでやろうとした話
Rubyの最新版をインストールした。
$ rvm install 3.0.2
Railsチュートリアルの言うとおりにコマンドをポチポチした。
yarnのインストールは自分で調べろって書いてあったから、公式の言うとおりにインストールした。
$ gem install rails -v 6.0.3
$ sudo apt install npm
$ sudo npm install -g yarn
$ yarn set version latest
$ mkdir environment
$ cd environment/
$ rails _6.0.3_ new hello_app
Gemfileを編集してbundle install
$ bundle install
Fetching gem metadata from https://rubygems.org/............
You have requested:
listen = 3.1.5
The bundle currently has listen locked at 3.6.0.
Try running `bundle update listen`
If you are updating multiple gems in your Gemfile at once,
try passing them all to `bundle update`
失敗!
チュートリアルによると、エラーメッセージを見て解決するよう書いてある。
エラーメッセージにはTry running bundle update listen
と書いてある。
やってみるか
$ bundle update listen
Fetching gem metadata from https://rubygems.org/............
You have requested:
spring = 2.1.0
The bundle currently has spring locked at 2.1.1.
Try running `bundle update spring`
If you are updating multiple gems in your Gemfile at once,
try passing them all to `bundle update`
次のTry runningはbundle update spring
$ bundle update spring
Fetching gem metadata from https://rubygems.org/............
You have requested:
listen = 3.1.5
The bundle currently has listen locked at 3.6.0.
Try running `bundle update listen`
If you are updating multiple gems in your Gemfile at once,
try passing them all to `bundle update`
これ、さっき見た!無限ループじゃん!!
でいろいろQiitaの記事を覗いたけど、無理だった。(バージョンの指定を~>
に変えたら良いとか書いてあった。マイナーバージョン程度ではどうにもならないのだった。
考察と解決
仮説を立てた
- もしかして、Rails 6.0.3にとってRuby 3って知らない子なんじゃ??
- つまり、Rails 6.0.3はRuby 3と相性が悪いんじゃないか?
そこで、Rails6.0.3ができたとき、Rubyの最新版っていくつだったのか調べた。
以下のURLからRails 6.0.3は2020年5月6日にリリースされたことがわかった。
2020年5月ってRubyのバージョンはいくつなのか以下のURLで調べた
2.7.1が最新だったことがわかった。
2.7系だと今は2.7.3が最新なので、2.7.3でも行けるんじゃね?
だめだったら、やりなおせばいいや!
というわけで、Hello_appをぶっ壊し、Rubyを入れ直す(rvmでバージョンを変えるだけ)
うまく行った話
rm -r *
$ rvm install 2.7.3
$ gem install rails -v 6.0.3
$ rails _6.0.3_ new hello_app
$ cd hello_app
$ bundle install
$ bundle update
$ bundle install
bundle update
したあとならbundle install
うまくいきました
まとめ
他のソフトウェアに依存するようなソフトウェアを使うときは、そのソフトウェアがリリースされた頃のバージョンにそろえてあげないといけない