Railsに挑戦しようと、かの有名なRuby on Railsチュートリアルに挑戦することにした。
その際に、最初のRailsのインストールで表題のエラーで躓いたので、備忘録としてこちらを執筆。
まずは下記のコマンドでRailsをバージョン指定でインストールしろとのこと。
gem install rails -v 7.0.4.3
上記のコマンドを実行したが、下記のエラーに遭遇。
Fetching nokogiri-1.16.4-x86_64-darwin.gem
ERROR: While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /Library/Ruby/Gems/2.6.0 directory.
sudo
をつけて回避しようと試みる。
sudo gem install rails -v 7.0.4.3
ところが、次は下記のエラーに遭遇。
ERROR: Error installing rails:
There are no versions of nokogiri (~> 1.14) compatible with your Ruby & RubyGems. Maybe try installing an older version of the gem you're looking for?
nokogiri requires Ruby version >= 3.0, < 3.4.dev. The current ruby version is 2.6.10.210.
最後の1行で、自分のPCに現在インストールされているRubyにバージョンが古すぎることが判明する。
nokogiri requires Ruby version >= 3.0, < 3.4.dev. The current ruby version is 2.6.10.210.
なので、rubyのバージョンを3.0以上に上げることとする。
ググったところ、rubyをバージョン指定してインストールする方法にrbenv
なるものがあるらしいので、こちらを採用する。(詳しくはこちらを参照。)
rbenv -l
コマンドでインストールできるrubyのバージョンを表示させたところ、複数個のバージョンが存在した。
$ rbenv install -l
3.0.6
3.1.4
3.2.3
3.3.0
何も考えず()に最も数字が大きいバージョンをインストールする。
$ rbenv install 3.3.0
ruby-build: using openssl@3 from homebrew
==> Downloading ruby-3.3.0.tar.gz...
(中略)
Installed ruby-3.3.0 to /Users/(わしのユーザー名)/.rbenv/versions/3.3.0
NOTE: to activate this Ruby version as the new default, run: rbenv global 3.3.0
今インストールしたバージョンをRubyのデフォルトに設定したいので、下記を実行。
rbenv global 3.3.0
ここで、ruby -v
コマンドを実行してrubyのバージョン確認を行ったところ、下記が表示。
$ ruby -v
ruby 2.6.10p210 (2022-04-12 revision 67958) [universal.arm64e-darwin23]
おやおや、3.3.0をインストールしたつもりだったが、rubyのバージョンが変わっていないじゃないか。
そこで、今度はrbenv global 変わらない
で検索(入力途中でサジェストされたため、同様のポイントで詰まっている人が他にも多数いる模様)。
下記のQiita記事に辿り着き、「解決策」という見出しにあるコマンドを実行。
結論、下記のコマンドを実行することで自分は解決。
$ source ~/.bash_profile
これを実行したあと、実際にruby --version
を実行したところ、無事に下記を得ることができた。
$ ruby --version
ruby 3.3.0 (2023-12-25 revision 5124f9ac75) [arm64-darwin23]
ruby自身のバージョンを上げることができたため、再度Railsのインストールを試みる。
sudo gem install rails -v 7.0.4.3
その結果が下記。
sudo gem install rails -v 7.0.4.3
(中略)
Successfully installed actioncable-7.0.4.3
Successfully installed rails-7.0.4.3
36 gems installed
A new release of RubyGems is available: 3.5.3 → 3.5.7!
Run `gem update --system 3.5.7` to update your installation.
なにやら最後にRubyGemsのバージョンアップを支持されているので、こちらもそのまま実行。
$ gem update --system 3.5.7
Updating rubygems-update
Fetching rubygems-update-3.5.7.gem
Successfully installed rubygems-update-3.5.7
(中略)
RubyGems installed the following executables:
/Users/tomoyasusunagawa/.rbenv/versions/3.3.0/bin/gem
/Users/tomoyasusunagawa/.rbenv/versions/3.3.0/bin/bundle
/Users/tomoyasusunagawa/.rbenv/versions/3.3.0/bin/bundler
RubyGems system software updated
再度、Railsのインストールを試みる。
$ sudo gem install rails -v 7.0.4.3
Successfully installed rails-7.0.4.3
1 gem installed
ここで、インストールしたrailsのバージョンを確認しようとrails -v
コマンドを実行したところ、下記が表示。
$ rails -v
Rails is not currently installed on this system. To get the latest version, simply type:
$ sudo gem install rails
You can then rerun your "rails" command.
おやおや、sudo gem install rails
コマンドは直前で叩いているじゃないか。
一応念のため、もう一回言われたコマンドを実行してみる。
$ sudo gem install rails -v 7.0.4.3
Successfully installed rails-7.0.4.3
1 gem installed
$ rails -v
Rails is not currently installed on this system. To get the latest version, simply type:
$ sudo gem install rails
You can then rerun your "rails" command.
なんだこれ、無限に同じ場所の繰り返しじゃないか、、、。
そう思いこれもググってみたところ、この件についても先輩がすでに対処されていた。
参考にしたのは下記のQiita記事。
この記事中のtl;drにあった下記にコマンドを何も考えずに実行。
$ hash -r
うん、何も表示されない。
この状態でrailsのバージョンを確認したところ、無事にバージョンが表示された。
$ rails -v
Rails 7.0.4.3
正直、hash -r
コマンドの意味は全く分かっていない。
詳細を知りたい方は、先ほどのQiita記事を参照してみてほしい。