Rubyをasdfで管理する
asdf は、複数のプログラミング言語やツールのバージョン管理を統一的に行うための CLI ツールです。
asdf を採用した理由は、異なるバージョンの言語 (node など)を使用したときも、プラグインの追加だけで対応出来、コマンドの操作性の違いに悩むこともないため、asdf で統一して管理が行えるからです。
他のツールとの違い
私も、以前 anyenv を使っていました。次の記事は asdf が「他のツール(anyenv)」と比べて何処が優れているかについて分かりやすく書かれています。
https://tech.wealthnavi.com/entry/20230127/1674795665
docker を使えば良いのではという話もありますが、手元環境だけでさっと環境を用意して、目的の作業を実行したいときは docker の環境を作らない方が手軽です。他の作業者が後から参加した時にも、asdf なら環境を直ぐに揃えることが出来ます。プロジェクトの規模が大きくなれば docker を検討すれば良いので、最初の一歩目を軽く始めたい時に asdf は役立ちます。
インストールは「macOS 環境」で行なっています。mac のデフォルの ruby バージョンは次の通りです。
$ ruby -v
ruby 2.6.10p210 (2022-04-12 revision 67958) [universal.x86_64-darwin22]
目次: インストール手順
1. 依存関係のインストール
Homebrew を使用して、依存関係のモジュールをインストールします
brew install coreutils curl git
2. asdf core のダウンロード
git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.11.3
v0.11.3は 「2023 年 6 月 2 日現在」のバージョンで変更される可能性があるので、インストールするときに公式サイトを確認して下さい。
Homebrew(brew install asdf)を使用してインストールする方法もありますが公式サイトに「公式の 「git」を使うことを強く勧めます」とありますのでそれに従います。
We highly recommend using the official git method.
3. asdf のインストール
(1) ~/.zshrc の一番最後の行に追加します
. "$HOME/.asdf/asdf.sh"
(2) ~/.zshrc の一番最後の行に追加して、補完機能を有効化します。
# append completions to fpath
fpath=(${ASDF_DIR}/completions $fpath)
# initialise completions with ZSH's compinit
autoload -Uz compinit && compinit
参考: zsh の補完機能について
https://gihyo.jp/dev/serial/01/zsh-book/0005
(3) zsh の設定を反映します。
source ~/.zshrc
4. ruby のプラグインのインストール
asdf plugin add ruby https://github.com/asdf-vm/asdf-ruby.git
5. ruby の build 環境を準備
ruby のバージョンは 最新(latest: 3.2 以降)をインストールするため、
参考資料: ruby-build「Suggested build environment」の章の macOS 「Ruby 3.1 and above requires OpenSSL 3」にあるコマンドを実行します。
sudo rm -rf /Library/Developer/CommandLineTools
sudo xcode-select --install
brew install openssl@3 readline libyaml gmp
export RUBY_CONFIGURE_OPTS="--with-openssl-dir=$(brew --prefix openssl@3)"
brew install rust
Note
1. Command Line Tools は念の為、再インストールして最新化してます。環境によって必要ない事もあります。
2. rust は 「3.2 以降」でYJIT コンパイラを使用するときに使います。(必須ではありません。)
参考資料: ruby-build
https://github.com/rbenv/ruby-build/wiki#suggested-build-environment
参考資料: YJIT
https://tech.medpeer.co.jp/entry/2023/05/09/100000
6. ruby のバージョン(latest)のインストール
asdf install ruby latest
7. ruby のバージョンを設定
グローバル
グローバル(全体で共通に使用する)に利用するバージョンの指定は、以下のようにして行います。
asdf global ruby latest
$ ruby -v
ruby 3.2.2 (2023-03-30 revision e51014f9c0) [x86_64-darwin22]
ローカル
asdf local ruby latest