Ruby工具链

1,694 阅读3分钟

RVM(Ruby Version Manager)

RVM官方地址

Ruby China

github

RVM是一个命令行工具,可以提供一个便捷的多版本Ruby环境的管理和切换。与rbenv rbenv 使用指南 相似.

安装

RVM官方推荐安装

RubyGems

RubyGems(简称 gems)是一个用于对 Ruby组件进行打包的 Ruby 打包系统。 它提供一个分发 Ruby 程序和库的标准格式,还提供一个管理程序包安装的工具.

Ruby1.9.1 以后的版本自带RubyGems,直接在终端gem update --system升级到最新版即可.

安装Gem

RubyGems.org 是官方的Gem托管中心,RubyGems就是从这里远程下载gem包的。RubyGems 将所有的gem包 安装到 /[ruby root]/lib/ruby/gems/[ver]/ 目录下,这其中包括了cachedocgemsspecifications 4个目录,cache下放置下载的原生gem包,gems下则放置的是解压过的gem包。当安装过程中遇到问题时,可以进入这些目录,手动删除有问题的gem包,然后重新运行 gem install [gemname] 命令即可.

源配置

Gem默认的源是rubygems.org/, 但是天朝下我们的下载安装gem会出现网络问题,所以这边我们可以改用国内的源gems.ruby-china.com/.

$ gem sources --remove https://rubygems.org/
$ gem sources -a https://gems.ruby-china.com/
$ gem sources -l
*** CURRENT SOURCES ***

https://gems.ruby-china.com/

终端命令

# 查看RubyGems软件的版本
gem -v

# 更新升级RubyGems软件自身
gem update --system

# 更新所有已安装的gem包
$ gem update

# 更新指定的gem包
# 注意:gem update [gemname]不会升级旧版本的包,可以使用 gem install [gemname] --version=[ver]代替
$ gem update [gemname]

# 安装指定gem包,程序先从本机查找gem包并安装,如果本地没有,则从远程gem安装。
gem install [gemname]

# 仅从本机安装gem包
gem install -l [gemname]

# 仅从远程安装gem包
gem install -r [gemname]

# 安装gem包,但不安装相关文档文件
gem install [gemname] --no-ri --no-rdoc

# 安装指定版本的gem包
gem install [gemname] --version=[ver]

# 删除指定的gem包,注意此命令将删除所有已安装的版本
gem uninstall [gemname]

# 删除某指定版本gem
gem uninstall [gemname] --version=[ver]

# 查看本机已安装的所有gem包
gem list

# 列出远程RubyGems.org 上有此关键字的gem包(可用正则表达式)
gem list -r keyword

# 列出远程RubyGems.org 上所有Gmes清单,并保存到文件。
gem list -r > remote_gem_list.txt

#查看所有gem包文档及资料
gem server

#显示RubyGem使用帮助
gem help

#列出RubyGem命令一些使用范例
gem help example

常用Gem

推荐 Ruby Gem 列表

cocoapods, Jenkins, git, fastlane

bundler

bundler主要用于管理Ruby应用程序的依赖关系,并按照此依赖关系安装所需的Gems.类似于iOS中常用的cocoapods.

Gemfile

简介

Gemfile 是我们创建的一个用于描述 gem 之间依赖的文件. Gemfile 必须放在项目的根目录下面,这是Bundler的要求,对于任何的其他形式的包管理文件来说,这也是标准.

这里值得注意的一点是 Gemfile 会被作为Ruby 代码来执行.当在 Bundler 上下文环境中被执行的时能使我们访问一些方法,我们用这些方法来解释 gem 之间的 require 关系.

创建

通过bundle init可创建出Gemfile文件

编辑

source 'https://rubygems.org'

gem 'sinatra', '~> 1.3.6'
gem 'rack-cache'
gem 'rack-bug'

安装Gem

根据Gemfile文件安装gem

bundle install

更新Gem

根据Gemfile文件更新gem 更新个别gem

bundle update sinatra

更新所有gem

bundle update

Gemfile.lock

如果任何需要的gem已经被安装了,bundler 会直接使用它们.在你的系统上安装完所有的 gem 后,bundler 会写一个所有这些 gem 和它们的版本号的快照到 Gemfile.lock

参考

版本管理工具及 Ruby 工具链环境

为什么我们要使用 RVM / Bundler ?

Rubygems 与 gem

Bundler 到底是怎么工作的 (暨 Ruby 依赖管理历史回顾)

Ruby 包管理分析

Bundler 的作用及原理

Gemfile 详解