Ruby - Arch Linux 中文维基

跳至內容

# Ruby

出自 Arch Linux 中文维基
翻譯狀態：

- 本文（或部分內容）譯自 Ruby，最近一次同步於 2025-05-02，若英文版本有所更改，則您可以幫助同步與翻譯更改的內容。
- 您可以在 ArchWiki 的對應頁面找到本文翻譯的原始修訂歷史。
- 本文可能與英文原文存在出入。

Ruby 是一門專注於簡潔和生產力的動態解釋型開源程式語言。

## 安裝

要使用 Ruby，安裝 ruby包。

要安裝 IRB，安裝 ruby-irb包。

### 多版本

如果你要在同一系統中運行多個版本 (比如 2.0.0-p0 和 1.9.3-p392），最簡單的辦法就是使用 RVM（英語：RVM）、chrubyAUR、rbenv 或者 asdf-vmAUR。

### 文檔

要通過 `ri` 命令行工具訪問文檔，安裝 ruby-rdoc包（工具）和 ruby-docs包（文檔），隨後便可以使用 `ri Array`、`ri Array.pop` 等命令查詢文檔（類似於手冊頁）。

### JRuby

Ruby 的 Java 實現 JRuby 可通過 jruby包 安裝。

### 標準庫

Ruby 的標準庫包含一系列 Ruby 模塊（關於模塊的更多信息請參見 #RubyGems）。ruby包 並未包含所有 Ruby 用戶預期在標準 Ruby 系統中存在的標準模塊，因此某些 Ruby 代碼可能無法直接運行。關於標準庫模塊集的詳細信息可參考：

https://stdgems.org/

在 #RubyGems 章節中討論了多種安裝模塊的方法。若要通過 pacman 系統級安裝標準模塊，可以安裝 ruby-stdlib包。注意 JRuby 無需此操作，因為 jruby包 軟體包已包含標準模塊。

## RubyGems

RubyGems 是 Ruby 模塊（稱為 gem）的包管理器，和 pacman 與 Arch Linux 的關係大致相當，可通過 rubygems包 安裝（ruby包 依賴）。

### 配置

在 Arch Linux 中，默認情況下運行 `gem` 時，gem 會按用戶安裝到 `~/.local/share/gem/ruby/` 目錄下，而非安裝到系統級的 `/usr/lib/ruby/gems/` 目錄。這被視為 Arch 上管理 gem 的最佳實踐，因為若採用系統級安裝可能會與 Pacman 安裝的 gem 產生衝突。

推薦的手動配置方法是設定 `$GEM_HOME` 環境變量，並將其添加到 `$PATH` 環境變量中，以便執行 RubyGems 的二進制文件：

    ~/.profile

    export GEM_HOME="$(gem env user_gemhome)"
    export PATH="$PATH:$GEM_HOME/bin"

此配置使得無需輸入完整路徑即可運行可執行 gem，而庫 gem 無需修改路徑即可正常使用。

注意：保存修改後，請重啟終端以使配置生效。

### 用法

查看已安裝的 gem 列表:

    $ gem list

獲取某個 gem 的詳細信息：

    $ gem spec "gem_name"

默認情況下，`gem list` 和 `gem spec` 開啟了 `--local` 選項，導致 gem 只會在本地系統裡進行搜索。這可以用 `--remote` 參數來覆蓋。因此，可以這樣搜索 mysql2 gem：

    $ gem list --remote mysql2

安裝某個 gem：

    $ gem install mysql2

可以通過不安裝本地文檔加快一點安裝速度：

    $ gem install mysql2 --no-document

注意：這可以通過配置以下 `~/.gemrc` 文件成為默認選項：

    ~/.gemrc

    gem: --no-document

更新所有已安裝的 gem：

    $ gem update

### 按用戶或以系統級安裝 gem

在 Arch Linux 下運行 `gem` 時，gem 默認按用戶安裝（即安裝到 `~/.gem/ruby/`），而非以系統級安裝（即安裝到 `/usr/lib/ruby/gems/`）。這被認為是 Arch 上管理 gem 的最好方式，因為系統級安裝可能會和 pacman 安裝的 gem 衝突。

可以通過以 root 身份運行 `gem` 命令並附加 `--no-user-install` 標誌以系統級安裝 gem。若要將此標誌設為默認行為，可在 `/etc/gemrc`（系統級配置）或 `~/.gemrc`（用戶級配置，優先級更高）中將原有的 `--user-install` 參數替換為 `--no-user-install`。

Bundler 通過將 gem 打包到應用程式中，在一定程度上解決了這些問題。請參閱下面關於使用 Bundler 的部分。

### Bundler

Bundler 用於指定應用程式所依賴的 gem，並可以同時指定所需版本。完成依賴聲明後，Bundler 將安裝所有必需的 gem（包含完整的依賴樹）並記錄安裝結果以便後續檢查。默認情況下，Bundler 將 gem 安裝到統一位置，但也支持直接安裝到應用程式目錄中。當運行應用程式時，Bundler 可確保使用正確的 gem 版本（即使系統中存在同一 gem 的多個版本），這需要以下配置：

- 應用程式必須通過 `bundle exec` 命令啟動
- 需在應用程式的主執行文件中添加所需樣板代碼

安裝 Bundler：

    $ gem install bundler

新建一個 bundle：

    $ bundle init

然後編輯當前目錄下的 `Gemfile`（由 `bundle init` 創建）以添加所需的 gem：

    Gemfile

    gem "rails", "3.2.9"
    gem "mysql2"

運行下面的命令安裝所有必需的 gem 到 `GEM_HOME`：

    $ bundle install

或者，運行下面的命令把 gem 安裝到工作路徑的 `.bundle`：

    $ bundle config set --local path '.bundle'

注意：命令 `bundle install --path .bundle` 已過時。但如果你的 Bundler 或 Ruby 版本較低導致上條命令無效，可以選擇嘗試使用這條命令。

別忘了編輯主執行文件：

    #!/usr/bin/env ruby

    # "This will automatically discover your Gemfile, and make all of the gems in
    # your Gemfile available to Ruby." https://bundler.io/rationale.html
    require 'bundler/setup'

    ...

最後運行你的程序:

    $ bundle exec 主执行文件.rb

### 使用 pacman 管理 gem

除了使用 `gem` 管理 gem，也可以通過 pacman 或 AUR 助手進行管理。Ruby 軟體包遵循命名約定：`ruby-gem名稱`。

此方法具有以下優勢：

- gem 會隨系統其他軟體一同更新
- 安裝的 gem 可在系統範圍內使用，而非僅限於安裝它們的用戶

注意：另有工具可通過自動生成指定 gem 的 PKGBUILD 文件，實現 gem 與 pacman 的集成，參見創建軟體包#PKGBUILD 生成器。

#### Quarry

Quarry 工具用於通過 RubyGems 生成二進制 Arch Linux 倉庫，可作為手動從 AUR 構建軟體包的簡化替代方案。其原始碼託管於 Github。

Quarry 倉庫由 Arch 開發者 anatolik 維護，地址為 https://pkgbuild.com/~anatolik/quarry/ ，包含了許多流行的 gem，並可根據請求添加新 gem。

啟用方法請參閱非官方用戶倉庫#quarry。

隨後可安裝所需的 gem 包，軟體包名為 `ruby-gem名稱`（如 ruby-rails包）。

一般性問題可至 https://bbs.archlinux.org/viewtopic.php?id=182729 詢問。

## 交互式 Shell

### Pry

Pry 是 Ruby 標準 IRB Shell 的強大替代品，具備語法高亮、靈活的插件架構、運行時代碼調用及原始碼與文檔瀏覽功能。

安裝與啟動方法：

    $ gem install pry
    $ pry

## 另見

- Ruby on Rails
- Ruby - https://www.ruby-lang.org/
- Bundler - https://bundler.io/
- why's (poignant) Guide to Ruby
- Learn Ruby The Hard Way

分類：​

- 程式語言

Ruby
新增話題