[asdf/Ruby] 使用 asdf 和 asdf-ruby 插件安装多个 Ruby 版本
使用 asdf 和 asdf-ruby 插件安装多个 Ruby 版本
asdf
是用于管理多个运行时版本的单个 CLI 工具。 它扩展了一个简单的插件系统来安装你最喜欢的编程语言、框架或软件工具:Dart、Flutter、Elixir、Golang (Go)、Java、Node.js、Python、Ruby 等等。
本文介绍如何使用 asdf
和 Ruby 插件通过 Homebrew 包管理器在 macOS 上安装多个 Ruby 版本。
推荐理由
CloudoLife 推荐使用 asdf 统一管理不同工具/编程语言/运行环境多版本。推荐理由:
简单性,只需要安装 asdf 和对应工具/编程语言/运行环境的插件,无需为不同的工具/编程语言/运行环境安装其他多版本管理工具。
一致性,使用相同的 asdf 基本命令和配置,可以统一管理不同工具/编程语言/运行环境多版本,按您所需,灵活熟练切换不同版本。
多样性,官方和社区插件已经支持多达数百种工具/编程语言/运行环境,几乎涵盖到所有工具/编程语言/运行环境。
及时性,插件支持的工具/编程语言/运行环境与上游保持同步,版本更新非常及时,非常容易尝试新版本。
先决条件
Xcode Command Line Tools 是一个小型的独立包,可从 Xcode 单独下载,它允许您在 macOS 中进行命令行开发,它由 macOS SDK 和命令行工具(如 Clang)组成。
有关安装和使用 Xcode 命令行工具的更多信息,请参阅 Xcode Command Line Tools
Homebrew 是 macOS(或 Linux)的缺失包管理器。
有关安装和使用 Homebrew 的更多信息,请参阅Homebrew - https://brew.sh/.
安装
安装 asdf
1 | 安装 asdf 依赖 |
安装 asdf Ruby Plugin
1 | 安装 Ruby Plugin依赖 |
添加到你的 Shell
假设使用 zsh
,运行以下命令将内容添加到 ~/.zshrc
:
1 | echo -e "\n. $(brew --prefix asdf)/asdf.sh" >> ${ZDOTDIR:-~}/.zshrc |
或查看 [3. Install asdf | Getting Started | asdf - https://asdf-vm.com/guide/getting-started.html#_3-install-asdf]https://asdf-vm.com/guide/getting-started.html#_3-install-asdf) 了解何时使用配置其他 Shell.
列出所有 Ruby 版本
更新 Ruby 插件。
1 | asdf plugin update ruby |
列出所有 Ruby 版本。
1 | asdf list all ruby |
安装 Ruby 版本
手动安装 Ruby 版本。
1 | asdf install ruby 3.0.2 |
配置 Ruby 版本
创建或修改 .tool-versions
文件(当前目录生效)或 ~.tool-versions
文件(全局生效)配置 Ruby 版本。
配置使用 Ruby 3.0.2 版本
1 | cat .tool-versions |
配置使用 Ruby 2.6.1 版本
1 | cat .tool-versions |
从另一个 Ruby 版本管理器迁移过来
asdf 使用 .tool-versions
在软件版本之间自动切换。 为了简化迁移,您可以让它读取现有的 .ruby-version
文件以找出应该使用的 Ruby 版本。 为此,将以下内容添加到 $HOME/.asdfrc
:
1 | legacy_version_file = yes |
如果您从支持 .ruby-version
中的模糊匹配的版本管理器(如 rvm 或 chruby)迁移,请注意您可能必须更改 .ruby-version
以包含完整版本(例如,将 2.6 更改为 2.6.1)。
常见问题
env: ruby_executable_hooks: No such file or directory
1 | bundle |
安装 bundler
gem,然后运行 bundle
。
1 | gem install bundler |
/.asdf/shims/rails: line 8: /usr/local/Cellar/asdf/0.9.0/libexec/bin/asdf: No such file or directory
1 | rails c |
备份 ~/.asdf/shims
后,运行 asdf reshim
更新所有 ~/.asdf/shims
文件。
1 | mv ~/.asdf/shims ~/.asdf/shims.bak |
参考链接
[1] Manage asdf - https://asdf-vm.com/#/core-manage-asdf
[2] asdf-vm/asdf-ruby: Ruby plugin for asdf version manager - https://github.com/asdf-vm/asdf-ruby
[3] Home · rbenv/ruby-build Wiki - https://github.com/rbenv/ruby-build/wiki#suggested-build-environment
[4] Switching to asdf - https://wolfgangrittner.dev/switching-to-asdf-for-ruby/
[6] Homebrew - https://brew.sh/
[8] Zsh - https://www.zsh.org/
[9] Ruby Programming Language - https://www.ruby-lang.org/en/
[10] Bundler: The best way to manage a Ruby application’s gems - https://bundler.io/
[11] Xcode Command Line Tools - https://developer.apple.com/downloads/index.action