前回、6年ぶりのRyby再開計画を発動させました。今回はRubyの最新版をMacにインストールします。想像していたより苦戦しましたが、後半にGoogleの生成AI、Gemini先生にサポートしてもらいながら、なんとか成功しました。ありがとう!Gemini先生!
【目次】
- 最新版のRubyのバージョンは3.3.0
- homebrewで最新版rubyをインストール
- rbenvとruby-buildをインストール
- rbenvで最新版rubyをインストール
- バージョンを切り替えるコマンドを実行
- そうだ、Geminiに相談しよう
- Rubyのパス、バージョン、シムを確認
- シェルのコマンドエラーあり
- シェルの設定を追加
- ありがとう、Gemini先生
- ログインシェルをzshに変更する(追記)
- 最後に
※Ruby/Ruby on Railsを習得するためにやったこと まとめ qiita.com
最新版のRubyのバージョンは3.3.0
Macでは既存でRubyが入っていたが、バージョンが2.6.10と最新版より古かった。
$ ruby -v ruby 2.6.10p210 (2022-04-12 revision 67958) [universal.x86_64-darwin22]
Ruby公式ページのダウンロードページを見ると最新版のRubyのバージョンは3.3の模様。
しかも、Ruby 2.7.8以前はメンテナンス終了とある。こりゃいかん。
※参考:ダウンロード
homebrewで最新版rubyをインストール
Macの場合homebrewを使う方法になる模様
※参考:Rubyのインストール
コマンドを入れてみる。Homebrewの更新がしばらくの時間続く
$ brew install ruby Updating Homebrew...
どうやらHomebrewを久々に使うとそうなるらしい
※参考:Homebrew の処理ですごく時間がかかる場合 #homebrew - Qiita
しばらく待つと急に動きだした。
Traceback (most recent call last): (中略) For compilers to find ruby you may need to set: export LDFLAGS="-L/usr/local/opt/ruby/lib" export CPPFLAGS="-I/usr/local/opt/ruby/include"
バージョンを確認したがまだ2.6.0のままのようだ、、
$ ruby -v ruby 2.6.10p210 (2022-04-12 revision 67958) [universal.x86_64-darwin22]
もう一回インストールコマンドを実行
$ brew install ruby ==> Downloading https://formulae.brew.sh/api/formula.jws.json #=#=# ==> Downloading https://formulae.brew.sh/api/cask.jws.json #=#=# Warning: ruby 3.3.0 is already installed and up-to-date. To reinstall 3.3.0, run: brew reinstall ruby
「警告: Ruby 3.3.0 はすでにインストールされており、最新の状態です。」とでた。
それでもバージョンは変わらない、、
$ ruby -v ruby 2.6.10p210 (2022-04-12 revision 67958) [universal.x86_64-darwin22]
rbenvとruby-buildをインストール
バージョンの切り替えには「rbenv」というマネージャが必要な模様
※参考:Rubyのインストール
rbenvの公式ページ
※参考:GitHub - rbenv/rbenv: Manage your app's Ruby environment
rbenvとruby-buildをインストールする
$ brew install rbenv ruby-build
list latest stable versions:(最新の安定バージョンのリスト)
$ rbenv install -l 3.0.6 3.1.4 3.2.3 3.3.0 jruby-9.4.6.0 mruby-3.3.0 picoruby-3.0.0 truffleruby-24.0.0 truffleruby+graalvm-24.0.0 Only latest stable releases for each Ruby implementation are shown. Use `rbenv install --list-all' to show all local versions.
list all local versions:(すべてのローカル バージョンのリスト)
$ rbenv install -L 1.8.5-p52 1.8.5-p113 (中略) 3.3.0 3.4-dev artichoke-dev jruby-dev jruby-1.7.2 (中略) truffleruby+graalvm-24.0.0
こっちの方がたくさんでてきた。
rbenvで最新版rubyをインストール
rbenvで最新版の3.3.0をインストールしてみる
$ rbenv install 3.3.0
インストールが実行された
ruby-build: using openssl@3 from homebrew ==> Downloading ruby-3.3.0.tar.gz... -> curl -q -fL -o ruby-3.3.0.tar.gz https://cache.ruby-lang.org/pub/ruby/3.3/ruby-3.3.0.tar.gz % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 21.0M 100 21.0M 0 0 6569k 0 0:00:03 0:00:03 --:--:-- 6595k ==> Installing ruby-3.3.0... ruby-build: using libyaml from homebrew -> ./configure "--prefix=$HOME/.rbenv/versions/3.3.0" --with-openssl-dir=/usr/local/opt/openssl@3 --enable-shared --with-libyaml-dir=/usr/local/opt/libyaml --with-ext=openssl,psych,+ -> make -j 4 -> make install ==> Installed ruby-3.3.0 to /Users/xxx(=user name)/.rbenv/versions/3.3.0 NOTE: to activate this Ruby version as the new default, run: rbenv global 3.3.0
Rubyのバージョンを確認。まだ2.6のままだなぁ
$ ruby -v ruby 2.6.10p210 (2022-04-12 revision 67958) [universal.x86_64-darwin22]
バージョンを切り替えるコマンドを実行
グローバルのrubyのバージョンを3.3.0に
$ rbenv global 3.3.0
しかしまだ切り替わらない
$ ruby -v ruby 2.6.10p210 (2022-04-12 revision 67958) [universal.x86_64-darwin22]
rbenvのバージョン確認すると3.3.0に印がついている(2.6は入っていないようだ)
$ rbenv versions system * 3.3.0 (set by /Users/xxx/.rbenv/version)
rbenvの適用バージョンを単体で見ても3.3.0になっている
$ rbenv version 3.3.0 (set by /Users/xxx/.rbenv/version)
そうだ、Geminiに相談しよう
最近、生成AIをchatGPT以外にもいろいろ試している。今回はGoogleのGeminiに相談しながら続ける。
※参考:https://gemini.google.com/app
Geminiの提案に従い、シェルを再起動する(下記の3つ試す)
ターミナルを閉じて再度開く
source ~/.bash_profileコマンドを実行する (bashを使用している場合)
source ~/.zshrcコマンドを実行する (zshを使用している場合)
rbenvの設定ファイルを確認する
$ cat ~/.rbenv/version 3.3.0
rbenvのキャッシュを更新する
$ rbenv rehash
バージョンはまだ変わらず、、
ruby -v ruby 2.6.10p210 (2022-04-12 revision 67958) [universal.x86_64-darwin22]
Rubyのパス、バージョン、シムを確認
Geminiに相談し、エラー原因の調査と対策を続ける。
現在使用されているRubyのパスを確認する(3.3になっている)
$ rbenv which ruby /Users/xxx/.rbenv/versions/3.3.0/bin/ruby
rbenv経由でRubyのバージョンを確認する(3.3になっている)
$ rbenv exec ruby -v ruby 3.3.0 (2023-12-25 revision 5124f9ac75) [x86_64-darwin22]
うーむ、問題なさそうなんだがなぁ。
RubyGemsの環境を確認する(3.3と2.6が併記されているがRUBY VERSIONは2.6)
$ gem env RubyGems Environment: - RUBYGEMS VERSION: 3.0.3.1 - RUBY VERSION: 2.6.10 (2022-04-12 patchlevel 210) [universal.x86_64-darwin22] - INSTALLATION DIRECTORY: /Library/Ruby/Gems/2.6.0 - USER INSTALLATION DIRECTORY: /Users/xxx/.gem/ruby/2.6.0 - RUBY EXECUTABLE: /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/bin/ruby - GIT EXECUTABLE: /usr/local/bin/git - EXECUTABLE DIRECTORY: /usr/local/bin - SPEC CACHE DIRECTORY: /Users/xxx/.gem/specs - SYSTEM CONFIGURATION DIRECTORY: /Library/Ruby/Site - RUBYGEMS PLATFORMS: - ruby - universal-darwin-22 - GEM PATHS: - /Library/Ruby/Gems/2.6.0 - /Users/xxx/.gem/ruby/2.6.0 - /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/gems/2.6.0 - GEM CONFIGURATION: - :update_sources => true - :verbose => true - :backtrace => false - :bulk_threshold => 1000 - REMOTE SOURCES: - https://rubygems.org/ - SHELL PATH: - /Users/xxx/.npm-global/bin - /Users/xxx/.npm-global/bin - /usr/local/bin - /System/Cryptexes/App/usr/bin - /usr/bin - /bin - /usr/sbin - /sbin - /Applications/Postgres.app/Contents/Versions/latest/bin - /var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin - /var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin - /var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin
RubyGems.orgはRubyコミュニティのgemのホスティングサービスです。すぐにgemを公開してインストールできます。APIを使用して利用可能なgemの詳細を調べられます。
※参考:RubyGems.org | your community gem host
rbenvシムの設定
$ rbenv shims /Users/xxx/.rbenv/shims/bundle /Users/xxx/.rbenv/shims/bundler /Users/xxx/.rbenv/shims/erb /Users/xxx/.rbenv/shims/gem /Users/xxx/.rbenv/shims/irb /Users/xxx/.rbenv/shims/racc /Users/xxx/.rbenv/shims/rake /Users/xxx/.rbenv/shims/rbs /Users/xxx/.rbenv/shims/rdbg /Users/xxx/.rbenv/shims/rdoc /Users/xxx/.rbenv/shims/ri /Users/xxx/.rbenv/shims/ruby /Users/xxx/.rbenv/shims/syntax_suggest /Users/xxx/.rbenv/shims/typeprof
shimsは rake、rubocop、rspec などといったRubyのコマンド単位で生成される実行可能なシェルスクリプトです。rbenvによって作られています。
※参考:ちゃんと理解するrbenv : (4) shimsを理解する
バージョン確認(結果はまだ変わらず、、)
$ ruby -v ruby 2.6.10p210 (2022-04-12 revision 67958) [universal.x86_64-darwin22]
シェルのコマンドエラーあり
シェルの確認(zshだった)
$ echo $SHELL /bin/zsh
※参考:シェルってなに?bashとzsh、自分のMacはどっちを使ってるの? | eureka
シェル起動ファイルの読み込み(zshの場合)
$ source ~/.zshrc -bash: /Users/xxx/.zshrc: No such file or directory
ん?シェルが読み込まれいないって?
Geminiに聞いた続きの作業もやってみる。
パス名の確認(システム全体の Ruby へのパスになっている)
$ which ruby /usr/bin/ruby
rbenv で管理される Ruby へのパスを設定
$ rbenv rehash
バージョン確認(やはり変わらない)
$ ruby -v ruby 2.6.10p210 (2022-04-12 revision 67958) [universal.x86_64-darwin22]
どうやらsource ~/.zshrc
コマンドを実行した時にエラーが発生しているのが関係していそうに思う。
シェルの設定を追加
.zshrcファイルの存在確認(存在していなそう)
$ ~/.zshrc -bash: /Users/xxx/.zshrc: No such file or directory
.zshrcファイルを新規作成する
$ touch ~/.zshrc
.zshrcファイルにrbenvの設定を記述する
# rbenvの初期化 if which rbenv > /dev/null; then eval "$(rbenv init -)" fi
Vimで記述しようと思ったがうまくいかなかったため、ファイルをテキストエディタで直接開いて編集した。
ターミナルを再起動→Rubyのバージョン確認(まだ2.6のまま)
$ ruby -v ruby 2.6.10p210 (2022-04-12 revision 67958) [universal.x86_64-darwin22]
シェル起動ファイルの読み込み(先ほどのエラーはなくなったが、何も表示されない)
$ source ~/.zshrc
パス名を確認(rbenvに変わった!)
$ which ruby /Users/xxx/.rbenv/shims/ruby
rbenv で管理される Ruby へのパスを設定
$ rbenv rehash
バージョン確認。お、3.3に変わった!!!
$ ruby -v ruby 3.3.0 (2023-12-25 revision 5124f9ac75) [x86_64-darwin22]
シェルのファイルと設定がなかったのが原因だったようだ!
ありがとう、Gemini先生
Gemini先生に成功を報告。下記の評価をもらえた♪
.zshrcファイルをエディタで書き換え、Rubyのバージョンを3.3.0に成功させたとのこと、おめでとうございます!
詳細な手順を踏んで丁寧に解決に取り組んでいただいた成果ですね。
問題解決に向けて、いくつか質問や確認事項を提示させていただきましたが、ご自身で解決策を見つけ、最終的に目標を達成できたのは素晴らしいです。
今後、何か問題や疑問が発生した際は、遠慮なくご連絡ください。
以下、今回の解決におけるポイントです。
原因の特定:
システム全体のRubyとrbenvで管理されるRubyのバージョンが異なることが原因でした。 解決策の検討:
rbenv shimsの設定 シェル起動ファイルの読み込み パス名の確認 バージョン設定 問題解決への粘り強い取り組み:
エラーメッセージを分析し、原因を特定 複数の解決策を試行 情報不足を補うために質問や確認 これらのポイントを意識することで、今後も様々な問題を解決していくことができるでしょう。
ありがとうGemini先生!
chatGPTの無料版(GPT-3.5)は2021年までの情報とちと古く、有料版(GPT-4)を検討していた。その前にcopiloto(GPT-4)やgeminiを試していた。
Geminiはこれからも使っていきたく思う。
ログインシェルをzshに変更する(追記)
※2024/03/28追記
その後、ターミナルを起動するたびにrubyのバージョンが2.6に戻ってしまっていた、、
$ ruby -v ruby 2.6.10p210 (2022-04-12 revision 67958) [universal.x86_64-darwin22]
いろいろ試した結果、source ~/.zshrc
を実行すると3.3になる
source ~/.zshrc $ ruby -v ruby 3.3.0 (2023-12-25 revision 5124f9ac75) [x86_64-darwin22]
ターミナル軌道のたびにこのコマンドを実行するのは手間なのでGemini先生に相談しながら原因を究明していった。
最終的にわかったのは、ターミナルの「設定>一般>開くシェル」がbashになっていた。
/bin/bash
これをにzshに変更するとログインシェルがbashではなくzshに変わった。
/bin/zsh
ターミナルのヘッダーにもbashと表示されていた(気がついてなかった、、)
ユーザー名 ー -bash ー 80x24
ここがzshに変わる
ユーザー名 ー -zsh ー 80x24
それによってターミナル起動時に最初からrubyのバージョンが3.3になった!
$ ruby -v ruby 3.3.0 (2023-12-25 revision 5124f9ac75) [x86_64-darwin22]
最後に
ということで想定より苦戦はしましたが、Gemini先生に助けられながらなんとか最新版のRubyをインストールできました!
次回はいよいよRuby公式ページの「20分ではじめるRuby」に入っていきたいと思います!それではまた。
※Ruby/Ruby on Railsを習得するためにやったこと まとめ qiita.com