发布于 

Ruby on Rails: RubyGems

简介

RubyGems is a package management framework for RubyRubyGems 是 Ruby 程序包管理器(工具)。很多编程语言或者平台都有自己的包管理工具,如 Rust 的 cargo、RedHat 的 RPM,Ubuntu 的 apt-get 等等。RubyGems 简称 gems,使用它可以方便地下载安装 Ruby 的软件包到自己的系统或者 Ruby 工程中,一个软件包称之为 gem

为了更好的使用各种轮子(gem),在 rubygems 可以找到很多已经用 ruby 写好的框架(或者称之为 lib),我们直接复用即可,另外自己也可以开发一些 ruby 库放到 gems 中供其他人享用。

文中提到的 gems 和 RubyGems 都表示是同一个意思。

安装 RubyGems

如果你使用的是 macOS,系统已经自带来 ruby 和 对应的 RubyGems,不需要单独安装。详细情况可以参考 Ruby 开发环境搭建 这篇文章。

如果你想独立安装 RubyGems,可以去 RubyGems 官网 下载安装即可。

安装完成之后,可以通过 gem 命令查看 gems 版本。

1
2
3
gem --version

3.1.4

RubyGems 源

使用 gems 下载每个 gem,默认使用的下载地址是 https://rubygems.org/,即对应的包地址在国外,速度较慢甚至会出现下载失败的情况。为了解决这个问题,Ruby 中国 提供了国内下载 gem 的通道,速度较快,源更新也比较及时。

1
2
# 查看 gems 源
gem sources -l

可以通过 gem 命令更改 gems 源。

1
2
3
gem sources -remove https://rubygems.org/

gem sources --add https://gems.ruby-china.com/

上面两条命令等同于下面。

1
gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/

我们也可以查看本地的文件确定是否已经更新源

1
2
3
4
5
6
7
8
9
10
cat ~/.gemrc 

---
:backtrace: false
:bulk_threshold: 1000
:sources:
- https://gems.ruby-china.com/
:update_sources: true
:verbose: true
:concurrent_downloads: 8

更新源缓存

1
gem sources -u

更多关于 gem sources 的命令,可以查看帮助

1
gem help sources

也可以使用清华大学提供的源:https://mirrors.tuna.tsinghua.edu.cn/rubygems/,好人一生平安。

常用的 gem 命令

下面主要以 rails 这个 gem 来举例

根据 RubyGem的指南,使用search 可以搜索任何 gem。

1
gem search rails --all

确切的搜索使用:

1
gem search '^rails$' --all

包括预发布版本使用 --pre

1
gem search '^rails$' --pre

从本地和远程服务器上查找含有rails字符串的包

1
gem search rails --both 

只从远程服务器上查找含有log字符串的包

1
gem search rails --remoter 

只从远程服务器上查找含有log字符串的包

1
gem search -r rails 

(un)install

安装最新版 rails

1
gem install rails

安装指定版本 rails

1
gem install rails --version 6.1.5

卸载 rails

1
gem uninstall rails

卸载指定版本的 rails

1
gem uninstall rails -v 6.1.5

list

查看本地安装了哪些 gem

1
gem list -l

查看本地安装了哪些版本的 rails

1
gem list '^rails$' -l

update

1
2
3
4
5
6
7
8
#更新所有包
gem update

#更新指定包
gem update rails

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

其他

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#查找本地含有数字的包
gem query -n ''[0-9]'' --local

#把rake.gemspec编译成rake.gem
gem build rake.gemspec

#检测rake是否有效
gem check -v pkg/rake-0.4.0.gem

#清除所有包旧版本,保留最新版本
gem cleanup

#显示rake包中所包含的文件
gem contents rails

#列出与rails相互依赖的包
gem dependency rails -v 6.1.5

#查看gem的环境
gem environment

参考文档


任何小事都不能忽视,否则可能就会出大事


本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。

veryitman