I recently migrated from rbenv and nvm to asdf and documented the steps I followed. This guide walks through how to install asdf on your Macbook using homebrew.
Asdf provides you with a single tool for version management. Instead of having separate language specific version managers for ruby, node, go, etc., I can simply use a single tool to manage all of this. In addition to this, asdf defines all dependencies and versions in a single file .tool-versions
.
If you already have a version manager installed, you first need to uninstall your existing version managers to avoid conflicts.
I had both rbenv and nvm installed using homebrew, to uninstall, I simply ran:
brew uninstall rbenv
brew uninstall nvm
Install asdf using homebrew
brew install asdf
Add the following to your zsh profile nano ~/.zshrc
to always make the asdf command available
echo -e "\n. $(brew --prefix asdf)/libexec/asdf.sh" >> ${ZDOTDIR:-~}/.zshrc
List all available asdf plugins
asdf plugin list all
If you have a specific plugin you're looking for such as ruby, you can grep for it
asdf plugin list all | grep ruby
Ruby is one of the plugins I'll need to let's go ahead and install the ruby plugin
asdf plugin add ruby https://github.com/asdf-vm/asdf-ruby.git
See which versions of ruby are available
asdf list all ruby
Install a version of ruby
// Install the latest version
asdf install ruby latest
// install a specific version
asdf install ruby 3.0.3
Set a global ruby version
asdf global ruby 3.0.3
Your global ruby settings are stored here
nano $HOME/.tool-versions
Check that the global version is set properly by navigating to any directory without .tool-versions
ruby -v
If you have applications that use a different version of ruby than your global version, navigate to the application's root directory and run:
asdf local ruby 3.0.3
The application's root directory will now have a .tool-versions
file created which stores your local settings
nano .tool-versions
Check that the global version is set properly by navigating to any directory within your application.
ruby -v