Ruby gem包管理使用指南与gem源搭建教程
时间:2026-08-17 | 作者:清风无痕 | 阅读:0RubyGems 几乎是每一个 Ruby 开发者都绕不开的工具,它就像是 Ruby 世界的“应用商店”,帮我们管理着各种各样的代码库。说实话,一开始接触时可能会被一堆命令绕晕,但其实核心用法就那么几个,掌握之后效率会提升不少。下面就来系统过一遍。
日常高频指令
先列几个平时最常用的操作,记牢它们基本就能应对绝大多数场景了:
gem -v—— 查看当前 RubyGems 的版本gem update --system—— 升级 RubyGems 自身gem install gem_name—— 安装某个指定的 gemgem install -v x.x.x gem_name—— 安装特定版本的 gemgem list—— 列出本地已安装的所有 gemgem update gem_name—— 更新某个具体 gemgem update—— 一口气更新所有已安装的 gemgem uninstall gem_name—— 卸载不再需要的 gem
有一点值得留意:默认情况下,安装 gem 时会顺带生成该库的 RDoc 和 ri 文档文件。如果你不打算看本地文档(大多数人其实都用在线文档),完全可以跳过这个步骤,省点时间和磁盘空间。安装时加上 --no-ri --no-rdoc 参数就行:
gem install gem_name --no-ri --no-rdoc
如果觉得每次都要敲参数太烦,可以在用户目录 ~ 下新建一个 .gemrc 文件,写入下面这行配置,以后所有 gem 操作都会默认跳过文档生成:
gem: --no-ri --no-rdoc
国内镜像源
服务器在国内的朋友应该都体会过直接连 rubygems.org 安装 gem 的“酸爽”——下载速度慢、甚至超时失败,简直折磨。好消息是,国内有淘宝(现在是 Ruby China)提供的镜像源,切换之后世界就清净了。
操作步骤也很简单:
$ gem sources --remove https://rubygems.org/ $ gem sources -a http://ruby.taobao.org/ $ gem sources -l
如果执行 gem sources -l 后看到类似下面的输出,说明切换成功了:
*** CURRENT SOURCES *** http://ruby.taobao.org/
另外,如果你用 Bundler 来管理 gem 依赖,只需将 Gemfile 顶部的源地址改一下即可:
source 'http://ruby.taobao.org/' gem 'rails', '3.2.2' ... ... ...
亲手制作并分享一个 Ruby Gem
作为开发者,除了消费别人的 gem,很多时候也需要把自己的代码打包发布,供团队或社区使用。整个过程其实比你想象的要简单。官方给出的三条命令就已经概括了核心流程:
gem update --system # 确保 RubyGems 是最新版 gem build foo.gemspec # 根据规范文件构建 gem 包 gem push foo-1.0.0.gem # 将 gem 推送到 rubygems.org
接下来用一个具体例子一步步演示,假设我们要创建一个名为 topico 的 gem,版本号 0.0.1。
1. 准备目录结构
. ├── lib │ └── topico.rb └── topico.gemspec
注意:lib 目录下必须有一个与 gem 名同名的 .rb 文件,这是 RubyGems 的约定。
2. 编写核心代码(lib/topico.rb)
class Topico def self.hello puts "Hello, RubyGems!" end end
3. 编写 gemspec 文件(topico.gemspec)
Gem::Specification.new do |s| s.name = 'topico' s.version = '0.0.1' s.date = '2012-03-11' s.summary = 'Greeting from Topico' s.description = 'Topico shows a greeting to RubyGems' s.authors = 'Author Name' s.email = 'username@username.com' s.files = ["lib/topico.rb"] s.homepage = 'http://rubygems.org/gems/topico' end
这里只列出了最常用的一些属性,实际开发中你还可以添加依赖、许可证等更多元数据。
4. 编译生成 .gem 文件
$ gem build topico.gemspec
成功后会看到这样一条信息:
Successfully built RubyGem Name: topico Version: 0.0.1 File: topico-0.0.1.gem
此时目录下多了一个 topico-0.0.1.gem 文件:
. ├── lib │ └── topico.rb ├── topico-0.0.1.gem └── topico.gemspec
5. 安装并测试 gem
先本地安装这个 gem:
$ gem install ./topico-0.0.1.gem
安装成功提示:
Successfully installed topico-0.0.1 1 gem installed Installing ri documentation for topico-0.0.1... Installing RDoc documentation for topico-0.0.1...
然后在 irb 里验证一下:
irb(main):001:0> require 'topico' => true irb(main):002:0> Topico.hello Hello, RubyGems! => nil
6. 发布到 RubyGems 网站
首先需要设置认证信息:
$ curl -u username https://rubygems.org/api/v1/api_key.yaml > ~/.gem/credentials
输入密码后,认证文件就保存好了。接着执行推送:
$ gem push topico-0.0.1.gem
收到类似下面的反馈,就表示发布成功了。从此全世界的 Ruby 开发者都可以使用你贡献的 gem 了。
Pushing gem to https://rubygems.org... Successfully registered gem: topico (0.0.1)
稍微复杂的示例:组织多个 Ruby 文件
如果 gem 包含多个代码文件,目录结构可以这样组织:
. ├── lib │ ├── ext │ │ └── calculation.rb │ └── topico.rb └── topico.gemspec
对应的 gemspec 中,s.files 需要列出所有文件:
s.files = ["lib/topico.rb", "lib/ext/calculation.rb"]
重新 gem build 即可。
如何在 Gem 中包含可执行文件
有些 gem 除了库代码,还提供命令行工具。做法很简单:
(1) 在 gem 根目录下创建 bin 文件夹,并生成一个可执行文件(记得修改权限为可运行):
$ mkdir bin $ touch bin/greeting $ chmod a+x bin/greeting
(2) 编辑 bin/greeting 文件内容:
#!/usr/bin/env ruby require 'topico' puts Topico.hello
(3) 在 gemspec 中添加 s.executables 配置:
s.executables << 'greeting'
之后执行 gem build 并安装,用户就能在命令行直接运行 greeting 命令了。
免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。
相关文章
更多-
- 使用RVM切换Ruby与Rails版本的实现方法
- 时间:2026-08-18
-
- Ruby语言是什么及入门使用方法
- 时间:2026-08-18
-
- Ruby on Rails网站项目搭建入门指南
- 时间:2026-08-18
-
- Ruby插入排序算法实现与二路插入排序代码示例
- 时间:2026-08-18
-
- Ruby图片滤镜算法实现代码与核心原理
- 时间:2026-08-18
-
- Ruby中Hash哈希结构基本操作方法详解
- 时间:2026-08-18
-
- Ruby面向对象编程:类方法与类扩展详解
- 时间:2026-08-18
-
- Ruby正则表达式语法详解与常用示例代码
- 时间:2026-08-18
精选合集
更多大家都在玩
大家都在看
更多-
- 糖尿病完全不能吃糖吗
- 时间:2026-09-15
-
- 蚂蚁庄园小课堂2026年9月16日最新题目答案
- 时间:2026-09-15
-
- 小鸡答题今天的答案是什么2026年9月16日
- 时间:2026-09-15
-
- 蚂蚁庄园每日答题答案2026年9月16日
- 时间:2026-09-15
-
- 以下哪种粮食是酿造绍兴黄酒的主要原料 蚂蚁庄园今日答案9月16日
- 时间:2026-09-15
-
- 劝学名句“及时当勉励,岁月不待人”出自哪位诗人 蚂蚁庄园今日答案9.16
- 时间:2026-09-15
-
- 蚂蚁庄园今天答题答案2026年9月16日
- 时间:2026-09-15
-
- 蚂蚁庄园答题今日答案2026年9月16日
- 时间:2026-09-15