見出し画像

Rubyをasdfで管理する

asdfは、複数のプログラミング言語やツールのバージョン管理を統一的に行うためのCLIツールです。

asdfを採用した理由は、異なるバージョンの言語 (nodeなど)を使用したときも、プラグインの追加だけで対応出来、コマンドの操作性の違いに悩むこともないため、asdfで統一して管理が行えるからです。


他のツールとの違い

私も、以前 anyenvを使っていました。次の記事はasdfが「他のツール(anyenv)」と比べて何処が優れているかについて分かりやすく書かれています。

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の補完機能について

(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

参考資料: 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

いいなと思ったら応援しよう!