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