介绍
RubyGems 是一个工具,可以管理 Ruby 应用程序包的生命周期,从创建到分发. 如果您曾经使用过基于 Ruby 的应用程序,那么很可能您已经使用 RubyGems 来管理依赖性、库或框架(例如 Ruby-on-Rails)。
在这篇DigitalOcean文章中,我们将学习RubyGems的所有重要部分和部件,从最基本的功能到更先进的功能。
词典
1、包管理员和RubyGems
11. What Is A Package Manager?
22. Application Packages
33. What Is RubyGems?
44. What Is A Gem?
2. RubyGems Gem 包格式
11. Gem Information And Format
22. The `*.gemspec` File
3、开始使用RubyGems
11. Installing Ruby And RubyGems
22. Usage
主要 RubyGem 操作与宝石合作
11. Finding Installed And Available Gems
22. Searching RubyGems.org For Gems
33. Installing New Gems
44. Finding Outdated Gems
55. Updating Gems
66. Removing / Deleting Gems
77. Reading The Gem Documentation
包管理员和RubyGems
什么是包管理员?
在计算机方面,几乎所有的东西都由不同程序之间的连接和集合组成. 一旦你启动机器,一堆代码就会被执行,这反过来会加载其他一些代码。
正如你可以从上面的应用程序执行生命周期的基本描述中看到的,当涉及到程序时,一切都取决于其他程序。
为了方便下载和安装程序的库,程序依赖,特别是今天,一组称为包管理器的工具被广泛使用,这些工具使它很容易找到,安装,并跟踪所有其他库,作为一个开发者,你的程序需要。
通过这些工具分发的应用程序包通常是包含程序和元数据的简单档案,不同的包管理器存在来管理不同的编程语言的依赖 - 他们每个人都以不同的方式命名他们的包。
应用包
简单地说,应用程序包包含已经编译和准备使用的软件或库,其他人使用. 它们可以(而且通常会)提供额外的文件,以提供有关包的信息,尽管重要,但有时只有一个体面的使用手册。
什么是 RubyGems?
在Ruby的情况下,默认的 _package manager_被称为RubyGems. 该程序自版本 1.9
以来一直与默认的Ruby解释器一起分发,并帮助您从下载到包装和分发Ruby应用程序 - 以及当然,相关的二进制和库。
什么是 Gem?
一个 Gem 是一个应用程序包结构非常类似于我们刚刚给出的通用描述,它可以是代码,库,依赖列表和一些额外的元数据的集合,定义了通过 RubyGems 工具分发的包。
在开发基于 Ruby (或 Ruby 相关的) 应用程序时,最简单的方法是使用这些包,在本教程中,我们将学习如何使用 RubyGems 来使用和处理基于 Gem 的包。
RubyGems Gem 包装格式
Gem 信息和格式
正如我们之前提到的,宝石是一个包含不同组件的包裹,每个宝石都有其平台的版本和基本定义。
Gem目录可以包含以下内容:
- 应用程序代码;
- 测试;
- 依赖的描述;
- 二进制;
- 相关文档;
- 有关包的信息(如 gemspec)。
它们具有类似以下的基本结构:
1/[package_name] # 1
2 |__ /bin # 2
3 |__ /lib # 3
4 |__ /test # 4
5 |__ README # 5
6 |__ Rakefile # 6
7 |__ [name].gemspec # 7
- [package_name]: Gem 包的主要根目录
- /bin: 如果包有任何可执行的二进制文件的位置
- /lib: 包含主要 Ruby 应用程序代码的目录(包括模块)。
- /test: 测试文件的位置
- Rakefile: 图书馆使用的 Rake 文件
- [packagename_spec: *.gemspec文件,具有主要目录的名称,
gemspec 檔案
就像任何被分发或共享的应用程序集一样,Gems还附有描述包的文件,该文件也往往包含一些非常有用的额外信息。
这些 gemspec 文件包含某些必要的数据,如包版本、维护者名称和平台,并有可能提供一些可选的属性,如密钥、联系信息或额外的描述。
一个 gemspec 文件看起来类似于以下示例:
1Gem::Specification.new do |s|
2 s.name = 'myapp'
3 s.version = '1.5.7'
4 s.licenses = ['Apache']
5 s.summary = "My application package"
6 s.description = "Optional, longer description."
7 s.authors = ["Maintaner Name"]
8 s.files = ["path/to/files", "additional/files", ..]
9end
开始使用 RubyGems
安装 Ruby 和 RubyGems
如果你没有安装Ruby,因此RubyGems,你可以遵循下面的两个链接之一,以便在你选择的平台上获得它。
- CentOS / Rhel:
如何在 CentOS 6.5 上使用 RVM 安装 Ruby 2.1.0
- Ubuntu / Debian:
如何在 Ubuntu 13 上安装 Ruby 2.1.0 使用 RVM
使用
一旦您安装 Ruby,该应用程序应该在您的PATH
中设置,您可以通过在终端模拟器中键入gem
来开始使用该工具(例如,OS X的终端,Windows的Putty等)。
运行``,查看一些使用说明和示例:
1gem
2
3# RubyGems is a sophisticated package manager for Ruby. This is a
4# basic help message containing pointers to more information.
5
6# Usage:
7# gem -h/--help
8# gem -v/--version
9# gem command [arguments...] [options...]
正如您所看到的,使用``的工作包括将命令链接到参数和选项中,例如:
1gem help commands
2
3# GEM commands are:
4
5# build Build a gem from a gemspec
6# cert Manage RubyGems certificates and signing settings
7# check Check a gem repository for added or missing files
8# ..
** 提示:** 当您运行 Ruby 或 Rake 等命令时,您的操作系统会通过目录列表进行搜索,以便找到具有该名称的可执行文件。
/usr/本地/bin:/usr/bin:/bin
PATH 中的目录从左到右进行搜索,因此列表开始的目录中的匹配可执行的目录优先于最后的目录。
当您安装 Ruby 时,无论是ruby
翻译器还是`RubyGems```都将被添加到您的路径中。
主要 RubyGem 操作与宝石合作
开始学习一个新的编程语言也意味着学习使用基本和常见的相关工具,如 RubyGems for Ruby。
通常,任何包管理器的主要操作可以被视为:
- 查找系统上安装的内容;
- 查找和发现新包;
- 查找需要更新的包;
- 安装新包;
- 更新旧包;
- 删除(或删除)包;
- 清理不再需要的包;
- 检查文档
让我们看看如何使用 RubyGems 执行这些操作。
寻找已安装和可用的宝石
您可以考虑找到目前安装的所有宝石,以获得他们的名字的 _list。
因此,记住列表
命令是你需要这个操作的。
运行以下操作以获取安装的宝石与其版本的 list:
1gem list
2
3# ** LOCAL GEMS ***
4
5# actionmailer (4.0.2)
6# actionpack (4.0.2)
7# activesupport (4.0.2)
8# bundler (1.5.3, 1.5.2)
9# capistrano (3.1.0)
10# coffee-rails (4.0.1)
11# coffee-script (2.2.0)
12# coffee-script-source (1.7.0, 1.6.3)
13# execjs (2.0.2)
14# i18n (0.6.9)
15# ..
搜索 RubyGems.org 为 宝石
如果您已经知道宝石的名称,您可以使用搜索
命令来搜索它。
作为回报,您将再次获得宝石和其版本的列表。
运行以下操作以按名称搜索宝石:
1# Usage: gem search [name]
2# Example:
3gem search rails
4
5# *** REMOTE GEMS ***
6
7# rails (4.0.2)
8# rails-3-settings (0.1.1)
9# rails-action-args (0.1.1)
10# rails-admin (0.0.0)
11# ..
** 注意:** 您可以使用常规表达式,以查询宝石名称. 您也可以通过d
旗,以获取额外的信息,例如:
1gem search rails_utils -d
2
3# *** REMOTE GEMS ***
4
5# rails_utils (2.1.4)
6# Author: Winston Teo
7# Homepage: https://github.com/winston/rails_utils
8#
9# Rails helpers based on opinionated project practices.
安装新宝石
一旦你找到了你想安装的宝石,你可以简单地使用安装
命令。
运行以下操作来安装新宝石:
1# Usage: [sudo] gem install [name]
2# Example:
3gem install rails_utils
4
5# Fetching: rails_utils-2.1.4.gem (100%)
6# Successfully installed rails_utils-2.1.4
7# Parsing documentation for rails_utils-2.1.4
8# Installing ri documentation for rails_utils-2.1.4
9# Done installing documentation for rails_utils after 0 seconds
10# 1 gem installed
** 注意:** 当您安装一个新的宝石时,在宝石中指定的所有依赖性也被安装,以便宝石实际上可以工作。
若要下载特定版本的宝石,请使用以下方法:
1# Usage: [sudo] gem install [name] -v [version]
2# Example:
3gem install rails -v 4.0
寻找过时的宝石
为了找出哪些宝石已经过时(即有更新的版本),您可以使用过时
命令,再一次,这将为您提供当前安装的版本(即 local gems)的宝石列表。
运行以下操作来找出哪些珠宝已过时:
1gem outdated
2
3# builder (3.1.4 < 3.2.2)
4# bundler (1.5.2 < 1.5.3)
5# coffee-script-source (1.6.3 < 1.7.0)
6# jquery-rails (3.0.4 < 3.1.0)
宝石更新
看到哪些珠宝需要更新后,您可以简单地使用更新
命令进行更新。
运行以下操作来更新一个宝石:
1# Usage: [sudo] gem update [name]
2# Example:
3gem update bundler
4
5# Updating installed gems
6# Updating bundler
7# Fetching: bundler-1.5.3.gem (100%)
8# Successfully installed bundler-1.5.3
9# Parsing documentation for bundler-1.5.3
10# Installing ri documentation for bundler-1.5.3
11# Installing darkfish documentation for bundler-1.5.3
12# Done installing documentation for bundler after 6 seconds
13# Gems updated: bundler
删除 / 删除宝石
从本地机器中删除宝石是用卸载
命令完成的,类似于安装
。
运行以下操作来删除 / 删除宝石:
1# Usage: [sudo] gem uninstall [name]
2# Example:
3gem uninstall bundler
或者,您可以指定一个版本来删除仅此版本。
1# Usage: [sudo] gem uninstall [name] -v [version]
2# Example:
3gem uninstall bundler -v 1.0.0
4
5# Successfully uninstalled bundler-1.0.0
阅读 Gem 文档
关于宝石最方便和最重要的事情之一是,它们(应该)带有良好的文档,以便您可以快速开始使用它们。
运行以下操作来运行文档服务器:
1gem server
2
3# Server started at http://0.0.0.0:8808
4# Server started at http://[::]:8808
您现在可以使用您最喜欢的浏览器访问http://0.0.0.0:8808,找到您想要了解的宝石,并阅读其文档。