Ruby 是一門專注於簡潔和生產力的動態解釋型開源程式語言。
安裝
多版本
如果你要在同一系統中運行多個版本 (比如 2.0.0-p0 和 1.9.3-p392),最簡單的辦法就是使用 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 代碼可能無法直接運行。關於標準庫模塊集的詳細信息可參考:
在 #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 可在系統範圍內使用,而非僅限於安裝它們的用戶
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