Ruby Gems:新版发布并计划纳入 Ruby 1.9 中

  • Werner Schuster
  • 孙向晖

2007 年 10 月 25 日

话题:RubyDevOps语言 & 开发

Eric Hodel宣布发布了 Ruby Gems 的 0.9.4.5 版本,Ruby Gems 是流行的 Ruby 打包管理系统。该版本是0.9.5 的 Beta 发布版,增加了一些新的特性:

  • 平台 gems 的自动化安装
  • 新的更具对带宽和内存友好性的索引文件格式
  • “脱机”模式(--no-update-sources
  • 可以指定的批量更新阈值(-B--bulk-threshold
  • 新的gem fetch命令
  • 现在在你指定-v时,gem已经可提供非常翔实的输出
  • 与 Ruby 1.9 的兼容性

维护 RubyForge 的 Tom Copeland 解释了包索引方式的变化历程,它将增强 Ruby Gems 的可靠性

从前你可能在运行 gem install 时见到过这个消息:
$ gem install rails ERROR:  While executing gem ... (Gem::GemNotFoundException) Could not find rails (< 0) in any repository
然后当你在 5 分钟后运行“gem install rails”时,一切又正常了。这和当时我们在 RubyForge 上重建 gem 索引的方式有关——我们“刚好”在重建,所以当前的索引会被重写,在构建的过程完成之后才会被传递出去。这会持续一段合适的时间(大约 10 分钟左右),在这段时间内索引基本上是空的。嘘。

[……]Eric Hodel 已经调整 gem 索引构建器,将其构建到一个临时目录,而后将其移到正确位置。所以那些 gem 索引的停歇已经成为历史。多谢了,Eric!

另一个变化改进了对内存的使用

同时,Wilson Bilkovich 增加了一种新的编组(Marshal)格式化的索引,这将减少带宽的使用和内存的消耗。现在使用编组式索引更新所耗的内存仅需 30M 左右,取代了原来 120M 左右的批量 yaml 索引更新。

如果想更新到 Ruby Gems 0.9.4.5 只需简单的执行:

gem update --system --source http://segment7.net/

Ruby 1.9兼容性相关的特性列表项暗示了 Ruby Gems 的未来:纳入到 Ruby 1.9 标准中。这源于笹田耕一(Sasada Koichi)过去发布于 7 月份的一个帖子:

Matz 计划引入 gem 到 Ruby1.9 中。有人对此举有何建议吗?

- 可行性 / 引入的困难度(谁来维护 gem?)

- 兼容性

- 以及其他问题

随之而来的讨论在十月份再一次回升,现在更关注于 Ruby Gems 在 Ruby 1.9 的本质细节。例如打包管理的名字和行为之类事情的规范正在持续讨论当中。

查看英文原文:Ruby Gems: new release and plans for inclusion in Ruby 1.9
译者简介:孙向晖,儿子小名“豆豆”,常被人称为“豆豆他爹”。1998 年开始步入 IT 行业,现任浪潮软件质保中心副主任。专注于研究和实践 MDA/UP/UML/SCM 等相关技术在团队中的大规模应用,对产品化的软件项目管理、需求管理和配置管理略有心得。他的博客为http://blog.csdn.net/xiaosun/。参与 InfoQ 中文站内容建设,请邮件至china-editorial[at]infoq.com
RubyDevOps语言 & 开发