跳至內容
出自 Arch Linux 中文维基

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

安裝

要使用 Ruby,安裝 ruby

要安裝 IRB,安裝 ruby-irb

多版本

如果你要在同一系統中運行多個版本 (比如 2.0.0-p0 和 1.9.3-p392),最簡單的辦法就是使用 RVM英語RVMchrubyAURrbenv 或者 asdf-vmAUR

文檔

要通過 ri 命令行工具訪問文檔,安裝 ruby-rdoc(工具)和 ruby-docs(文檔),隨後便可以使用 ri Arrayri 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 listgem 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,也可以通過 pacmanAUR 助手進行管理。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


另見