Ruby

出自 ArchWiki
(重定向自 RubyGems

Ruby 是一种动态、解释型、开源的编程语言,专注于简洁和高效。

安装

要使用 Ruby,安装 ruby 软件包。

要安装 IRB,安装 ruby-irb 软件包。

多个版本

如果您想在同一系统上运行多个版本(例如 2.0.0-p0 和 1.9.3-p392),最简单的方法是使用 RVMchrubyAURrbenvasdf-vmAUR 中的一个。

文档

要使文档可以通过 ri 命令行工具访问,请安装 ruby-rdocruby-docs 以获取文档本身。然后您可以使用以下命令查询文档:ri Arrayri Array.pop 等(类似于 man 手册)

JRuby

Ruby 的 Java 实现 JRuby 可以通过 jruby 软件包安装。

标准库

Ruby 标准库的一部分由 Ruby 模块组成(有关模块的更多信息,请参见 RubyGems)。ruby 软件包不包含 Ruby 用户可以假定在任何 Ruby 系统上都已安装的所有标准模块,因此某些 Ruby 代码可能无法开箱即用。有关标准库模块集的更多信息,请访问 https://stdgems.org/

RubyGems 部分讨论了几种安装模块的方法。要使用 pacman 系统级安装标准模块,可以安装 ruby-stdlib 软件包。请注意,JRuby 不需要这样做,因为 jruby 软件包包含标准模块。

RubyGems

RubyGems 是 Ruby 模块(称为 gems)的包管理器,有点类似于 pacman 对于 Arch Linux 的作用。它可以通过 rubygems 软件包安装,它是 ruby 的依赖项。

配置

默认情况下,在 Arch Linux 中,当运行 gem 时,gems 是按用户安装的(安装到 ~/.local/share/gem/ruby/),而不是系统级安装(安装到 /usr/lib/ruby/gems/)。这被认为是 Arch 上管理 gems 的最佳方式,因为否则它们可能会干扰 Pacman 安装的 gems。

推荐的设置方法是手动指定您的 $GEM_HOME,然后可以将其附加到您的 $PATH 环境变量中,以便允许执行 RubyGems 二进制文件

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

这是可执行 gems 正常工作所必需的,无需键入完整位置,尽管库无需修改路径即可工作。

注意: 保存更改后,重启终端以使更改生效。

使用 gem env 查看当前的 RubyGems 环境

$ gem env

用法

查看已安装的 gems

$ 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

更新所有已安装的 gems

$ gem update

系统级安装 gems

可以通过以 root 身份运行 gem 命令并附加 --no-user-install 标志来系统级安装 Gems。可以通过在 /etc/gemrc(系统级)或 ~/.gemrc(按用户,覆盖系统级)中将 --user-install 替换为 --no-user-install 来将此标志设置为默认值。

Bundler 在一定程度上通过将 gems 打包到您的应用程序中来解决这些问题。请参阅下面有关使用 bundler 的部分。

Bundler

Bundler 允许您指定您的应用程序依赖哪些 gems,以及可选地指定这些 gems 应有的版本。一旦完成此规范,Bundler 将安装所有必需的 gems(包括完整的 gem 依赖关系树)并记录结果以供以后检查。默认情况下,Bundler 将 gems 安装到共享位置,但它们也可以直接安装到您的应用程序中。当您的应用程序运行时,Bundler 提供每个 gem 的正确版本,即使已安装了每个 gem 的多个版本。这需要做一些工作:应用程序应使用 bundle exec 调用,并且必须在应用程序的主可执行文件中放置两行样板代码。

安装 Bundler

$ gem install bundler

启动新的 bundle

$ bundle init

然后编辑当前目录中的 Gemfile(由 bundle init 创建)并列出您需要的 gems

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

运行以下命令将 gems 安装到 GEM_HOME

$ bundle install

或者,运行以下命令将 gems 安装到工作目录中的 .bundle

$ bundle config set --local path '.bundle'
注意: 命令 `bundle install --path .bundle` 已弃用,因为它依赖于跨 bundler 调用记住,而 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.rubygems.org.cn/rationale.html
require 'bundler/setup'

...

最后,运行您的程序

$ bundle exec main_executable_name.rb

使用 pacman 管理 RubyGems

除了使用 gem 管理 gems 之外,您还可以使用 pacmanAUR 助手。Ruby 软件包遵循命名约定 ruby-gemname

此选项提供以下优势

  • Gems 与系统的其余部分一起更新。
  • 已安装的 gems 在系统范围内可用,而不是仅对安装它们的用户可用。
注意: 还有一些工具通过为指定的 gems 自动生成 PKGBUILD 来集成 gempacman:请参阅 创建软件包#PKGBUILD 生成器

Quarry

Quarry 是一种工具,允许为 Arch Linux 维护 rubygems 二进制仓库,作为手动从 AUR 构建软件包的更简单替代方案。源代码托管在 Github 上。

该仓库由 Arch 开发者 anatolik 在 https://pkgbuild.com/~anatolik/quarry/ 维护。它包含许多流行的 gems,并且可以根据请求添加新的 gems。

请参阅 非官方用户仓库#quarry 以启用它。

然后安装所需的 gem。软件包名称为 ruby-gem name

一般问题可以在 https://bbs.archlinux.org/viewtopic.php?id=182729 上提出。

交互式 Shell

Pry

Pry 是标准 IRB shell 的强大替代品,用于 Ruby。它具有语法高亮、灵活的插件架构、运行时调用以及源代码和文档浏览功能。

$ gem install pry
$ pry

参见