Rubyをasdfで管理する
asdfは、複数のプログラミング言語やツールのバージョン管理を統一的に行うためのCLIツールです。
asdfを採用した理由は、異なるバージョンの言語 (nodeなど)を使用したときも、プラグインの追加だけで対応出来、コマンドの操作性の違いに悩むこともないため、asdfで統一して管理が行えるからです。
他のツールとの違い
私も、以前 anyenvを使っていました。次の記事はasdfが「他のツール(anyenv)」と比べて何処が優れているかについて分かりやすく書かれています。
インストールは「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
Homebrew(brew install asdf)を使用してインストールする方法もありますが公式サイトに「公式の 「git」を使うことを強く勧めます」とありますのでそれに従います。
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の補完機能について
(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
参考資料: ruby-build
参考資料: YJIT
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