動態

詳情 返回 返回

rbenv:Ruby 多版本管理利器 - 動態 詳情

在 Ruby 開發的世界中,經常需要面對不同項目使用不同 Ruby 版本的情況。這時,一個高效、靈活且易於使用的 Ruby 版本管理工具就顯得尤為重要。

rbenv 正是這樣一個工具,它允許開發者在同一台計算機上輕鬆安裝、切換和管理多個 Ruby 版本。本文將詳細介紹 rbenv 的安裝、基本使用以及一些高級特性,幫助你更好地掌握這個強大的工具。

rbenv 簡介

rbenv 是一個輕量級的 Ruby 版本管理工具,通過修改環境變量來控制當前使用的 Ruby 版本。它不會干擾系統自帶的 Ruby 環境,而是為用户提供一個隔離的 Ruby 運行環境。這意味着你可以根據項目需求,輕鬆切換到所需的 Ruby 版本,確保項目的兼容性和運行穩定性。

安裝 rbenv

Homebrew 安裝

  1. 在 macOS (或 Linux) 系統上,建議使用 Homebrew 安裝 rbenv。詳細教程

    brew install rbenv ruby-build
    

    Homebrew 詳細教程可查看:

    • Homebrew 釀酒術:精心調配你的 macOS 軟件環境
  2. 在 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)"
    
  3. 執行 source ~/.zshrc 或者關閉終端窗口並打開一個新窗口,讓我們的更改生效。

克隆 Git 倉庫安裝

對於更自動化的安裝,可以使用 rbenv-installer。如果更喜歡手動方法安裝,請按照以下步驟操作。

  1. 將 rbenv 克隆到 ~/.rbenv:

    git clone https://github.com/rbenv/rbenv.git ~/.rbenv
    
  2. 配置 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 的作用。

  3. 執行 source ~/.zshrc 或者關閉終端窗口並打開一個新窗口,讓我們的更改生效。

卸載 rbenv

rbenv 的簡單性使得臨時禁用或從系統中卸載它變得很容易。詳細教程

  1. 禁用 rbenv 管理你的 Ruby 版本,只需從 shell 啓動配置中註釋或刪除 rbenv init 行即可。這將從 PATH 中刪除 rbenv shims 目錄,並且將以後的使用(例如 ruby)將執行系統版本 Ruby,完全繞過 rbenv。

    禁用後,rbenv 仍可在命令行上訪問,但你的 Ruby 應用程序不會受到版本切換的影響。

  2. 要完全卸載 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

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 獲取更佳閲讀體驗和最新內容。

Add a new 評論

Some HTML is okay.