问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

rbenv:Ruby多版本管理利器

创作时间:
作者:
@小白创作中心

rbenv:Ruby多版本管理利器

引用
1
来源
1.
https://www.cnblogs.com/liam-i/p/18209426

在Ruby开发的世界中,经常需要面对不同项目使用不同Ruby版本的情况。这时,一个高效、灵活且易于使用的Ruby版本管理工具就显得尤为重要。rbenv正是这样一个工具,它允许开发者在同一台计算机上轻松安装、切换和管理多个Ruby版本。本文将详细介绍rbenv的安装、基本使用以及一些高级特性,帮助你更好地掌握这个强大的工具。

rbenv简介

rbenv是一个轻量级的Ruby版本管理工具,通过修改环境变量来控制当前使用的Ruby版本。它不会干扰系统自带的Ruby环境,而是为用户提供一个隔离的Ruby运行环境。这意味着你可以根据项目需求,轻松切换到所需的Ruby版本,确保项目的兼容性和运行稳定性。

安装rbenv

Homebrew安装

在macOS(或Linux)系统上,建议使用Homebrew安装rbenv:

brew install rbenv ruby-build

在shell中加载rbenv:

rbenv init

执行source ~/.zshrc或者关闭终端窗口并打开一个新窗口,让更改生效。

克隆Git仓库安装

对于更自动化的安装,可以使用rbenv-installer。如果更喜欢手动方法安装,请按照以下步骤操作:

将rbenv克隆到~/.rbenv

git clone https://github.com/rbenv/rbenv.git ~/.rbenv

配置shell来加载rbenv:

  • 对于bash:
echo 'eval "$(~/.rbenv/bin/rbenv init - bash)"' >> ~/.bash_profile
  • 对于Zsh:
echo 'eval "$(~/.rbenv/bin/rbenv init - zsh)"' >> ~/.zshrc

执行source ~/.zshrc或者关闭终端窗口并打开一个新窗口,让更改生效。

卸载rbenv

rbenv的简单性使得临时禁用或从系统中卸载它变得很容易。

禁用rbenv管理你的Ruby版本,只需从shell启动配置中注释或删除rbenv init行即可。这将从PATH中删除rbenv shims目录,并且将以后的使用(例如ruby)将执行系统版本Ruby,完全绕过rbenv。

要完全卸载rbenv,请执行以下步骤:

rm -rf "$(rbenv root)"

如果你已使用包管理器安装了rbenv,则最后一步执行rbenv包删除:

  • Homebrew:
brew uninstall rbenv
  • Debian、Ubuntu及其衍生版本:
sudo apt purge rbenv
  • Archlinux及其衍生版本:
sudo pacman -R rbenv

rbenv基本使用

安装Ruby版本

rbenv install命令不随rbenv一起提供,而是由ruby-build插件提供。在尝试安装Ruby之前,请检查你的构建环境是否具有必要的工具和库。然后:

rbenv install -l     # 列出最新的稳定版本
rbenv install -L     # 列出所有本地版本
rbenv install 3.3.0  # 安装Ruby版本

如果rbenv install命令找不到,你可以将ruby-build作为插件安装:

git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build

设置Ruby版本

安装完后,需要设置Ruby版本以完成安装并开始使用Ruby,你可以使用rbenv versions命令查看已安装的版本列表。要切换/设置到特定版本,请运行:

rbenv global 3.3.0   # 设置本机的默认Ruby版本,你可以替换为你已安装的版本号
# 或:
rbenv local 3.3.0    # 设置该目录的Ruby版本,你可以替换为你已安装的版本号
# 或:
rbenv shell 3.3.0   # shell环境,切换到Ruby 3.3.0版本,你可以替换为你已安装的版本号

除了rbenv install命令之外,你还可以手动下载并编译Ruby作为~/.rbenv/versions的子目录。该目录中的内容也可以是安装在文件系统其他位置的Ruby版本的符号链接。

安装Ruby gem

例如,使用rbenv local 3.3.0为你的项目选择Ruby版本。然后,像平常一样继续安装gems:

gem install bundler

你不应该使用sudo来安装gem。通常,Ruby版本将安装在你的主目录下,因此你的用户可以写入。如果你在安装gems时收到“你没有写入权限”错误,则很可能你的“系统”Ruby版本仍然是全局默认版本。使用rbenv global <version>更改它,然后重试。

使用gem env检查gem的安装位置:

gem env home
# => ~/.rbenv/versions/<version>/lib/ruby/gems/...

卸载Ruby版本

随着时间的推移,你安装的Ruby版本将累积在~/.rbenv/versions目录中。要删除旧的Ruby版本,只需rm -rf你要删除的版本的目录即可。你可以使用rbenv prefix命令查找特定Ruby版本的目录,例如rbenv prefix 3.3.0

ruby-build插件提供了rbenv uninstall命令来自动执行删除过程:

rbenv uninstall 3.3.0  # 自动执行删除Ruby版本

常用命令

你需要了解的主要rbenv命令是:

rbenv versions

列出rbenv已知的所有Ruby版本,并在当前活动版本旁边显示一个星号:

$ rbenv versions
  system
  2.7.4
* 3.3.0 (set by /Users/liam/.rbenv/version)
  jruby-9.4.6.0
  mruby-3.3.0
  truffleruby-24.0.1

rbenv version

显示当前活动的Ruby版本,以及有关其设置方式的信息:

$ rbenv version
3.3.0 (set by /Users/liam/.rbenv/version)

rbenv local

通过将版本名称写入当前目录中的.ruby-version文件来设置本地应用程序特定的Ruby版本。此版本覆盖全局版本,并且可以通过设置RBENV_VERSION环境变量或使用rbenv shell命令来覆盖自身:

rbenv local 3.1.2

当不带版本号运行时,rbenv local会报告当前配置的本地版本。你还可以取消设置本地版本:

rbenv local --unset

rbenv global

通过将版本名称写入~/.rbenv/version文件来设置要在所有shell中使用的Ruby全局版本。此版本可以通过特定于应用程序的.ruby-version文件或通过设置RBENV_VERSION环境变量来覆盖:

rbenv global 3.1.2

特殊版本名称system告诉rbenv使用系统Ruby(通过搜索$PATH来检测)。当没有版本号运行时,rbenv global报告当前配置的全局版本。

rbenv shell

通过在shell中设置RBENV_VERSION环境变量来设置特定于shell的Ruby版本。此版本覆盖特定于应用程序的版本和全局版本:

rbenv shell jruby-9.4.6.0

当没有版本号运行时,rbenv shell会报告RBENV_VERSION的当前值。你还可以取消设置shell版本:

rbenv shell --unset

请注意,你需要启用rbenv的shell集成(安装说明的步骤3)才能使用此命令。如果你不想使用shell集成,你可以简单地自己设置RBENV_VERSION变量:

export RBENV_VERSION=jruby-9.4.6.0

rbenv rehash

为rbenv已知的所有Ruby可执行文件安装shims(~/.rbenv/versions/*/bin/*)。通常你不需要运行此命令,因为它会在安装gems后自动运行:

rbenv rehash

rbenv which

显示给定可执行文件的完整路径:

$ rbenv which irb
/Users/liam/.rbenv/versions/3.3.0/bin/irb

rbenv whence

列出包含指定可执行文件名称的所有Ruby版本:

$ rbenv whence rackup
3.3.0
jruby-9.4.6.0
truffleruby-24.0.1

环境变量

名称
默认
描述
RBENV_VERSION
指定要使用的Ruby版本。另请参阅rbenv shell
RBENV_ROOT
~/.rbenv
定义Ruby版本和shims所在的目录。另请参阅rbenv root
RBENV_DEBUG
输出调试信息。例如:rbenv --debug
RBENV_HOOK_PATH
查看wiki
搜索rbenv hooks查看路径列表
RBENV_DIR
$PWD
开始搜索.ruby-version文件的目录

插件支持

rbenv还支持通过插件来扩展功能。例如,ruby-build和rbenv-vars插件可以让你更方便地安装和管理Ruby版本。你可以通过Homebrew或直接从Git仓库安装这些插件,并使用它们来简化Ruby版本的安装和管理过程。

ruby-build

安装ruby-build插件的命令如下:

# 通过Homebrew安装
brew install ruby-build
# 或者通过Git安装
git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build

安装完成后,你可以使用ruby-build命令来安装和管理Ruby版本,而无需手动下载和编译Ruby源代码。

ruby-vars

安装rbenv-vars插件的命令如下:

# 通过Homebrew安装
brew install rbenv-vars
# 或者通过Git安装
git clone https://github.com/rbenv/rbenv-vars.git "$(rbenv root)"/plugins/rbenv-vars

安装完成后,你可以使用ruby-vars命令让你在生成Ruby进程之前设置全局和特定于项目的环境变量。

结语

rbenv是一个功能强大的Ruby版本管理工具,它允许开发者在同一台计算机上轻松安装、切换和管理多个Ruby版本。通过使用rbenv,你可以确保你的项目在正确的Ruby环境中运行,从而提高开发效率和代码质量。随着Ruby生态系统的不断发展,rbenv将继续成为开发者不可或缺的工具之一。希望本文能帮助你更好地理解和使用rbenv,为你的Ruby开发之旅提供便利!

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号