在 Ruby 開發的世界中,經常需要面對不同項目使用不同 Ruby 版本的情況。這時,一個高效、靈活且易於使用的 Ruby 版本管理工具就顯得尤為重要。 rbenv 正是這樣一個工具,它允許開發者在同一臺電腦上輕鬆安裝、切換和管理多個 Ruby 版本。本文將詳細介紹 rbenv 的安裝、基本使用以... ...
在 Ruby 開發的世界中,經常需要面對不同項目使用不同 Ruby 版本的情況。這時,一個高效、靈活且易於使用的 Ruby 版本管理工具就顯得尤為重要。
rbenv 正是這樣一個工具,它允許開發者在同一臺電腦上輕鬆安裝、切換和管理多個 Ruby 版本。本文將詳細介紹 rbenv 的安裝、基本使用以及一些高級特性,幫助你更好地掌握這個強大的工具。
rbenv 簡介
rbenv 是一個輕量級的 Ruby 版本管理工具,通過修改環境變數來控制當前使用的 Ruby 版本。它不會幹擾系統自帶的 Ruby 環境,而是為用戶提供一個隔離的 Ruby 運行環境。這意味著你可以根據項目需求,輕鬆切換到所需的 Ruby 版本,確保項目的相容性和運行穩定性。
安裝 rbenv
Homebrew 安裝
-
在 macOS (或 Linux) 系統上,建議使用 Homebrew 安裝 rbenv。詳細教程
brew install rbenv ruby-build
Homebrew 詳細教程可查看:
-
在 shell 中載入 rbenv
運行下麵命令,並按照列印的說明進行操作:
rbenv init
例如,下麵這個示例,我們運行
rbenv init
後,提示將eval "$(rbenv init - zsh)"
添加到~/.zshrc
文件中,才能自動載入 rbenv。$ rbenv init # Load rbenv automatically by appending # the following to ~/.zshrc: eval "$(rbenv init - zsh)"
-
執行
source ~/.zshrc
或者關閉終端視窗並打開一個新視窗,讓我們的更改生效。
克隆 Git 倉庫安裝
對於更自動化的安裝,可以使用 rbenv-installer。如果更喜歡手動方法安裝,請按照以下步驟操作。
-
將 rbenv 克隆到
~/.rbenv
:git clone https://github.com/rbenv/rbenv.git ~/.rbenv
-
配置 shell 來載入 rbenv: 詳細教程
-
對於 bash:
在 macOS (或 Linux) 系統上,bash 通常通過以下方式配置
~/.bash_profile
:echo 'eval "$(~/.rbenv/bin/rbenv init - bash)"' >> ~/.bash_profile
-
對於 Zsh:
echo 'eval "$(~/.rbenv/bin/rbenv init - zsh)"' >> ~/.zshrc
如果你好奇,請查看此處以瞭解 init 的作用。
-
-
執行
source ~/.zshrc
或者關閉終端視窗並打開一個新視窗,讓我們的更改生效。
卸載 rbenv
rbenv 的簡單性使得臨時禁用或從系統中卸載它變得很容易。詳細教程
-
要禁用 rbenv 管理你的 Ruby 版本,只需從 shell 啟動配置中註釋或刪除
rbenv init
行即可。這將從 PATH 中刪除rbenv shims
目錄,並且將以後的使用(例如ruby
)將執行系統版本 Ruby,完全繞過 rbenv。禁用後,
rbenv
仍可在命令行上訪問,但你的 Ruby 應用程式不會受到版本切換的影響。 -
要完全卸載 rbenv,請執行步驟(1),然後刪除 rbenv 根目錄。這將刪除安裝在
`rbenv root`/versions/
下的所有 Ruby 版本:rm -rf "$(rbenv root)"
如果你已使用包管理器安裝了 rbenv,則最後一步執行 rbenv 包刪除:
- Homebrew:
brew uninstall rbenv
- Debian、Ubuntu 及其衍生版本:
sudo apt purge rbenv
- Archlinux 及其衍生版本:
sudo pacman -R rbenv
- Homebrew:
rbenv 基本使用
安裝 Ruby 版本
rbenv install
命令不隨 rbenv 一起提供,而是由 ruby-build 插件提供。
在嘗試安裝 Ruby 之前,請檢查你的構建環境是否具有必要的工具和庫。然後:
rbenv install -l # 列出最新的穩定版本
rbenv install -L # 列出所有本地版本
rbenv install 3.3.0 # 安裝 Ruby 版本
要對 BUILD FAILED
場景進行故障排除,請查看 ruby-build 討論部分。
如果
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 <subcommand> |
|
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 開發之旅提供便利!
相關鏈接
- https://github.com/rbenv/rbenv
- https://github.com/rbenv/ruby-build
- https://github.com/rbenv/rbenv-vars
- https://brew.sh
- Homebrew 釀酒術:精心調配你的 macOS 軟體環境
訪問博址 liam-i.github.io 獲取更佳閱讀體驗和最新內容。