Eric Hodel ( InfoQ 对 Eric 的访谈) 发布了 RubyGems 1.2 . 这个发行版包含了以下一些新特性:
- RubyGems 不再是更新全部文件,而只是获取需要的 gemspec 文件。源需要升级至 RubyGems 1.2,以便 RubyGems 能发挥新元数据升级器的优势。如果一个源是 1.2 之前版本的,那么 RubyGems 出于兼容性的原因将使用原先更新全部文件的方法
- RubyGems 现在包含运行和开发依赖,使用
#add_development_dependency
和#add_runtime_dependency 表示。<span face="Verdana" id="f000"> 没有标明类型的依赖将被视为运行依赖 </span>
- 如果 rubygems/defaults/operating_system.rb 和
rubygems/defaults/#{RBX_ENGINE}.rb 这两个文件存在,那么
RubyGems 会引用这两个文件。通过这两个文件,负责打包的人员和负责 ruby 实现的人员可以在 RubyGems 中添加自定义行为。 (如果发现 RubyGems 能力不足,请到 RubyGems 列表中提交改进建议。)/etc/gemrc
(以及 windows 上的等价物) 被用于全局设置- setup.rb 现在可以处理 --vendor 和 --destdir 两个选项,这两个选项可以被打包人员使用
- gem stale 命令可以列出上次访问时的 gem 列表
如果从一个最近的 RubyGems 版本 (至少得是 0.8.5) 升级,新发行版的说明中提示可以运行如下指令: <pre id="rm4y19">$ gem update --system (你可能需要 admin 或者 root 权限)
而正如 Github 的博客中所说的,使用RubyGems 1.2 可以很容易从Github 安装gem : > 如果你是一个Ruby 爱好者,那么运行下面的命令来犒劳自己一下。 <pre id="rm4y22">$ sudo gem update --system <br id="rm4y23"></br>$ gem sources -a http://gems.github.com
现在你可以像安装 RubyForge 上 gem 一样地直接安装 Github 上的 gem,而不再需要任何特殊的说明
目前 JRuby 的用户还需要一些附加的工作来使用 RubyGems 1.2。 Vladimir Sizikov 提供了一个让 RubyGems 1.2 运行在现在的 JRuby 1.1.x 版本上的暂行方案:> jruby -S gem update --system
由于 rubygems 1.1.1 的 bug,这个标准的升级命令不能让 rubygems 运行在 JRuby 1.1.2 上。幸运的是,这里有一个变通的办法:
jruby -S gem install rubygems-update -v 1.1.1
一旦安装了这个升级版本,接下来你就可以执行上面列出来的那个升级命令。
这里仅仅给出步骤,而 Vladimir’s 的邮件里给出了具体哪些步骤被执行、哪些文件被下载的详细解释,并且说明了为何这些可以使 RubyGems 1.2 正确运行。
注:如果你不想执行这些步骤,那么你需要做的仅仅是等待 JRuby 1.1.3。这个版本将会使用 RubyGems 1.2。 Ruby 1.9 的更新记录中说明了 1.9.x 的主版本将会同时升级到 1.2 版本。 最后, Tom Copeland 说明了 RubyForge 上的 Gems 在基础设施方面的改进:
这个想法是跟踪新 gem 的文件名,而后 RubyForge 会在本地提供这些 gem,而不是将请求重定向到镜像。[…] 提供这些 gem 不再需要等待所有镜像进行更新。现在我只需要写一点代码在 24 小时之后从列表中删除文件名;到那时 gem 将已经被同步。
因此,综上所述,gem 在它们发布后非常短的时间就可以使用了。
查看英文原文: RubyGems Roundup: 1.2 Release, JRuby, Faster Gem Releases
评论