Railsのバージョンを更新したのに、それを呼び出すことができなかった(古いバージョンのものが呼ばれてしまう)ので、私が実施した対処法を記します。
結論を先に申しますと、windowsの環境変数のPathにあるruby
の箇所を新しいものに修正したらRails
も新しいものが呼べたよ、となります。
状況(流れ)
Windows11を使っています。rubyやrailsなどはすでにPCにインストールしてありました。
新しいバージョンが出ていたので新しくインストールしていきます。
gitを更新したらバージョンを確認、
rubyを更新したらバージョンを確認、
railsを更新したらバージョンを確認、
あれ?できてない?
$ rails -v
Rails 6.1.4.1
Rails 7.0.4を入れたのに。。。
違う方法で確認
$ gem list rails
*** LOCAL GEMS ***
rails (7.0.4)
rails-dom-testing (2.0.3)
rails-html-sanitizer (1.5.0)
こっちではできています。
とりあえず新たなバージョンを指定してrails newをしてみます。
$ rails _7.0.4_ new hello_app -O --skip-bundle
C:/ruby/Ruby30/lib/ruby/3.0.0/rubygems.rb:281:in `find_spec_for_exe': can't find
gem railties (= 7.0.4) with executable rails (Gem::GemNotFoundException)
from C:/ruby/Ruby30/lib/ruby/3.0.0/rubygems.rb:300:in `activate_bin_path'
from C:/ruby/Ruby30/bin/rails:23:in `<main>'
できません。
先ほどrubyを更新して3.2.1になっています。それはC:/ruby/Ruby32/
にあるはずなのですが、それも呼ばれていないようです。呼ばれているのはC:/ruby/Ruby30/
になっています。
改めてrubyのバージョンを確認。
$ ruby -v
ruby 3.2.1
rubyは新しいバージョンになっている。。
嫌な予感の中、railsコマンドでバージョンを指定しなければどうなるか確認してみます。
$ rails new hello_app
.
.
.
動きましたが、Gemfileを確認するとrubyもrailsも古いバージョンのものでした。
ちょっと頭の整理をしてみます。
$ ruby -v
$ gem list rails
$ gem info -e rails
では新しくなっている。
$ rails -v
$ rails new hello_app
では古いまま。
つまり、プロンプトでrailsコマンドを使うと、古いものが呼ばれるのだと推測しました。
ということはコマンドプロンプトでコマンドを実行したときは何を呼ぶのかをどこかで定義しているはず!
……どこで定義しているか分からず。。
とりあえず環境変数を確認してみるもrailsの項目は見当たりませんでした。
ただ、rubyへのパスがいままでのバージョンアップの履歴に合わせて複数登録されていました。古いのは使わんし、修正しておこうと、古いのを削除しました。
なぜかこの修正でrailsの新しいバージョンが呼ばれるようになりました。
$ ruby -v
ruby 3.2.1
$ rails -v
Rails 7.0.4.2
rails new
でも成功し、バージョンを指定したrails _7.0.4_ new
でも成功しました。
疑問と未解決
何が原因だったのか、本当はどのように解決したらいいのかご存じの方はご教授いただければ幸いです。
今回はよくわからない現象が、よくわからないまま解決してしまいました。
私には未知なものが多すぎて手に負えないというのが現状です。
rubyはどこにインストールするのかを決めていますが、railsの場合はどこにインストールされているのかわかりません。
たぶんですが、下記のような場所にインストールされていると思っています。
旧: C:/ruby/Ruby30/bin/rails
新: C:/Users/○○○/.gem/ruby/3.2.0
なんか気持ち悪いですが、どうしてこうなったのかわからないままです。