Ruby
Ruby 是一种动态、解释型、开源的编程语言,专注于简洁和高效。
安装
多版本
如果要在同一系统上运行多个版本(例如 2.0.0-p0 和 1.9.3-p392),最简单的方法是使用 RVM、chrubyAUR、rbenv、asdf-vmAUR 中的一个。
文档
要通过 ri
命令行工具使用文档,请安装 ruby-rdoc 和 ruby-docs 以获取文档本身。然后,您可以使用以下命令查询文档:ri Array
,ri Array.pop
等(类似于 man-pages)
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 软件包安装,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 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
更新所有已安装的 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 安装到共享位置,但它们也可以直接安装到您的应用程序中。当您的应用程序运行时,即使已安装每个 gem 的多个版本,Bundler 也会提供每个 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 之外,您还可以使用 pacman 或 AUR 助手。Ruby 软件包遵循命名约定 ruby-gemname。
此选项提供以下优点
- Gems 与系统的其余部分一起更新。
- 安装的 gems 是系统级的,而不是仅对安装它们的用户可用。
Quarry
Quarry 是一种工具,允许为 Arch Linux 维护 rubygems 二进制仓库,作为从 AUR 手动构建软件包的更简单替代方案。源代码托管在 Github 上。
该仓库由 Arch 开发者 anatolik 在 https://pkgbuild.com/~anatolik/quarry/ 维护。它包含许多流行的 gems,并且可以根据请求添加新的 gems。
请参阅 Unofficial user repositories#quarry 以启用它。
然后安装所需的 gem。软件包名称为 ruby-gem name
。
一般问题可以在 https://bbs.archlinux.org/viewtopic.php?id=182729 提出。
交互式 Shell
Pry
Pry 是 Ruby 标准 IRB shell 的强大替代品。它具有语法高亮、灵活的插件架构、运行时调用以及源代码和文档浏览功能。
$ gem install pry $ pry