如何使用Ruby包管理器RubyGems:入门

来自菜鸟教程
跳转至:导航、​搜索

介绍


RubyGems 是一个管理 Ruby 应用程序包从创建到分发的生命周期的工具。 如果您曾经使用过基于 Ruby 的应用程序,那么您很有可能使用过 RubyGems 来管理依赖项、库或框架(例如 Ruby-on-Rails)。

在这篇 DigitalOcean 文章中,我们将了解 RubyGems 的所有重要部分,从最基本的到更高级的功能。 如果你打算长期使用(或使用)Ruby,掌握这个工具可以为你的工作带来很大的效率。

词汇表


1. 包管理器和 RubyGems


1. What Is A Package Manager?
2. Application Packages
3. What Is RubyGems?
4. What Is A Gem?

2. RubyGems Gem 包格式


1. Gem Information And Format
2. The `*.gemspec` File

3. RubyGems 入门


1. Installing Ruby And RubyGems
2. Usage

4. 使用 Gem 的主要 RubyGem 操作


1. Finding Installed And Available Gems
2. Searching RubyGems.org For Gems
3. Installing New Gems
4. Finding Outdated Gems
5. Updating Gems
6. Removing / Deleting Gems
7. Reading The Gem Documentation

包管理器和 RubyGems


什么是包管理器?


在计算机方面,几乎所有东西都由不同程序之间的连接和集合组成。 在你启动机器的那一刻,一堆代码被执行,这反过来又加载了一些其他的。 构建了一个金字塔,形成了最终平台,允许您运行所需的更高级别的应用程序(例如 红宝石!)。

从上面对应用程序执行生命周期的基本描述可以看出,在程序方面,一切都依赖于他人。 这个周期从开发阶段开始。

为了方便程序所依赖的库的下载和安装过程,特别是现在,大量使用称为包管理器的一组工具。 这些工具使查找、安装和跟踪作为开发人员的程序所需的所有其他库变得非常容易。

通过这些工具分发的应用程序包通常是包含程序和元数据的简单档案。 存在不同的包管理器来管理不同的编程语言的依赖关系——并且它们每个都以不同的方式命名它们的包。

应用程序包


简而言之,应用程序包包含其他人使用的已编译和即用型软件或库。 他们可以(并且通常会)附带额外的文件来提供有关软件包的信息,尽管很重要,但有时只有一个体面的使用手册。 一旦包管理器安装了一个包,所有这些元素都可以在它们设置的环境中访问(例如 RVM 宝石组)。

什么是 RubyGems?


对于 Ruby,默认的 包管理器 称为 RubyGems。 自版本 1.9 以来,该程序已与默认的 Ruby 解释器一起分发,它可以帮助您完成从下载到打包和分发 Ruby 应用程序的许多事情——当然还有相关的二进制文件和库。 RubyGems 非常丰富,可能是现存最成熟的包管理应用程序之一。 它为开发人员提供了一种标准结构,以及一种标准格式来处理称为 Gems 的应用程序集合(包)。

什么是宝石?


Gem 是一个应用程序包,其结构与我们刚刚给出的通用描述非常相似。 它可以是代码、库、依赖项列表和一些附加元数据的集合,定义了使用 RubyGems 工具分发的包。

开始使用程序的最简单方法是在开发基于 Ruby(或 Ruby 相关)的应用程序时使用这些包。 在本教程中,我们将学习如何使用 RubyGems 来处理和处理基于 Gem 的包。

RubyGems Gem 包格式


宝石信息和格式


正如我们之前提到的,Gem 是一个包含不同组件集的包。 每个 Gem 都有一个版本和它所针对的平台的基本定义。

Gem 目录可以包含以下内容:

  • 申请代码;
  • 测试;
  • 依赖关系描述;
  • 二进制文件;
  • 相关文件;
  • 有关包裹的信息(例如 宝石规格)。

它们具有类似于以下的基本结构:

/[package_name]               # 1
        |__ /bin              # 2
        |__ /lib              # 3
        |__ /test             # 4
        |__ README            # 5
        |__ Rakefile          # 6
        |__ [name].gemspec    # 7
  1. [package_name]:

Gem 包的主根目录。

  1. /bin:

可执行二进制文件的位置(如果包有)。

  1. /lib:

包含主要 Ruby 应用程序代码(inc. 模块)。

  1. /test:

测试文件的位置。

  1. Rakefile:

使用 Rake 进行构建的库的 Rake 文件。

  1. [packagename].gemspec:
  • .gemspec 文件,具有主目录的名称,包含所有包元数据,例如 名称、版本、目录等

gemspec 文件


与任何分布式或共享的应用程序集合非常相似,Gems 还附带一个描述包的文件,该文件也往往包含一些非常有用的附加信息。

这些 gemspec 文件包含某些必需的数据,例如包版本、维护者名称和平台,还可能包含一些可选属性,例如密钥、联系信息或附加描述。

gemspec 文件类似于以下示例:

Gem::Specification.new do |s|
  s.name        = 'myapp'
  s.version     = '1.5.7'
  s.licenses    = ['Apache']
  s.summary     = "My application package"
  s.description = "Optional, longer description."
  s.authors     = ["Maintaner Name"]
  s.files       = ["path/to/files", "additional/files", ..]
end

RubyGems 入门


安装 Ruby 和 RubyGems


如果您尚未安装 Ruby 以及 RubyGems,您可以按照以下两个链接之一在您选择的平台上获取它。

  • CentOS / 瑞尔:

如何使用 RVM 在 CentOS 6.5 上安装 Ruby 2.1.0

  • Ubuntu / Debian:

如何使用 RVM 在 Ubuntu 13 上安装 Ruby 2.1.0

用法


使用 RubyGems 非常容易。 安装 Ruby 后,应在 PATH 中设置应用程序,您可以通过在终端仿真器中键入 gem 开始使用该工具(例如 OS X 的终端,Windows 的 Putty 等)。

运行gem查看一些使用说明和示例:

gem

# RubyGems is a sophisticated package manager for Ruby.  This is a
# basic help message containing pointers to more information.

# Usage:
#     gem -h/--help
#     gem -v/--version
#     gem command [arguments...] [options...]

如您所见,使用 gem 包括使用参数和选项链接命令,例如:

gem help commands

# GEM commands are:

# build             Build a gem from a gemspec
# cert              Manage RubyGems certificates and signing settings
# check             Check a gem repository for added or missing files
# ..

提示: 当你运行 ruby 或 rake 之类的命令时,你的操作系统会搜索目录列表以查找具有该名称的可执行文件。 此目录列表位于名为 PATH 的环境变量中,列表中的每个目录都由冒号分隔:

/usr/local/bin:/usr/bin:/bin

PATH 中的目录是从左到右搜索的,因此列表开头目录中的匹配可执行文件优先于末尾的另一个目录。 在此示例中,将首先搜索 /usr/local/bin 目录,然后是 /local/bin,然后是 /bin。

当您安装 Ruby 时,ruby 解释器和 RubyGems 的 gem 都会添加到您的 PATH 中。

使用 Gem 的主要 RubyGem 操作


开始学习一门新的编程语言也意味着学习使用基本和常用的相关工具,例如 RubyGems for Ruby。 不用太复杂,让我们看看开始使用这个包管理工具时需要了解的基本操作。

通常,任何包管理器的主要操作都可以被认为是:

  • 找出系统上安装了什么;
  • 搜索和发现新包;
  • 找出哪些软件包需要更新;
  • 安装新的;
  • 更新旧的;
  • 移除(或删除)包;
  • 清理不再需要的东西;
  • 检查文档。

让我们看看如何使用 RubyGems 执行这些操作。

查找已安装和可用的 Gem


您可以将查找所有当前安装的 gem 视为获取其名称的 list

因此请记住 list 命令是此操作所需要的。

运行以下命令以获取已安装 gem 的 list 及其版本:

gem list

# ** LOCAL GEMS ***

# actionmailer (4.0.2)
# actionpack (4.0.2)
# activesupport (4.0.2)
# bundler (1.5.3, 1.5.2)
# capistrano (3.1.0)
# coffee-rails (4.0.1)
# coffee-script (2.2.0)
# coffee-script-source (1.7.0, 1.6.3)
# execjs (2.0.2)
# i18n (0.6.9)
# ..

RubyGems.org 中搜索宝石


如果您已经知道 gem 的名称,您可以使用 search 命令来查找它。

作为回报,您将再次获得宝石及其版本的列表。

运行以下命令以按名称搜索 gem:

# Usage: gem search [name]
# Example:
gem search rails

# *** REMOTE GEMS ***

# rails (4.0.2)
# rails-3-settings (0.1.1)
# rails-action-args (0.1.1)
# rails-admin (0.0.0)
# .. 

注意: 查询gem名称可以使用正则表达式。 您还可以通过 -d 标志来获取更多信息,例如:

gem search rails_utils -d

# *** REMOTE GEMS ***

# rails_utils (2.1.4)
#     Author: Winston Teo
#     Homepage: https://github.com/winston/rails_utils
# 
#     Rails helpers based on opinionated project practices.

安装新宝石


找到要安装的 gem 后,只需使用 install 命令即可。

运行以下命令来安装新的 gem:

# Usage: [sudo] gem install [name]
# Example:
gem install rails_utils

# Fetching: rails_utils-2.1.4.gem (100%)
# Successfully installed rails_utils-2.1.4
# Parsing documentation for rails_utils-2.1.4
# Installing ri documentation for rails_utils-2.1.4
# Done installing documentation for rails_utils after 0 seconds
# 1 gem installed

注意:当你安装一个新的gem时,gem中指定的所有依赖项也会被安装,这样gem才能真正工作。

要下载特定版本的 gem,请使用以下命令:

# Usage: [sudo] gem install [name] -v [version]
# Example:
gem install rails -v 4.0

寻找过时的宝石


为了找出哪些宝石已经过时(即 存在较新版本),您可以使用 outdated 命令。 同样,这将为您提供一个包含当前安装版本的 gem 列表(即 本地宝石)。

运行以下命令以找出哪些 gem 已过时:

gem outdated

# builder (3.1.4 < 3.2.2)
# bundler (1.5.2 < 1.5.3)
# coffee-script-source (1.6.3 < 1.7.0)
# jquery-rails (3.0.4 < 3.1.0)

更新宝石


在查看需要更新哪些 gem 之后,您可以使用 update 命令简单地进行更新。

运行以下命令来更新 gem:

# Usage: [sudo] gem update [name]
# Example:
gem update bundler

# Updating installed gems
# Updating bundler
# Fetching: bundler-1.5.3.gem (100%)
# Successfully installed bundler-1.5.3
# Parsing documentation for bundler-1.5.3
# Installing ri documentation for bundler-1.5.3
# Installing darkfish documentation for bundler-1.5.3
# Done installing documentation for bundler after 6 seconds
# Gems updated: bundler

移除/删除宝石


使用 uninstall 命令从本地计算机中删除 gem,类似于 install

运行以下命令来删除/删除 gem:

# Usage: [sudo] gem uninstall [name]
# Example:
gem uninstall bundler

或者,您可以指定一个版本以仅删除该版本。

# Usage: [sudo] gem uninstall [name] -v [version]
# Example:
gem uninstall bundler -v 1.0.0

# Successfully uninstalled bundler-1.0.0

阅读 Gem 文档


关于 gems 最方便和最重要的事情之一是它们 [应该] 带有良好的文档,以便您可以快速开始使用它们。 使用文档的最简单方法是运行本地服务器,您可以在其中访问所有已安装 gem 的使用说明。

运行以下命令来运行文档服务器:

gem server

# Server started at http://0.0.0.0:8808
# Server started at http://[::]:8808

您现在可以使用您喜欢的浏览器访问 http://0.0.0.0:8808,找到您想要了解更多信息的 gem 并阅读其文档。

提交人: [[“%3Ca|https]] ://twitter.com/ostezer [[“%3C/a|”>操作系统]] 泰泽