RubyGems 导航菜单

博客

返回到博客文章

2.2.0.rc.1 已发布

RubyGems 2.2.0.rc.1 包含的主要增强功能、次要增强功能和错误修复。

要更新到预发布版 RubyGems,可以运行

gem update --prerelease --system

如果您需要升级或降级,请按照 如何升级/降级 RubyGems 说明进行操作。要手动安装 RubyGems,请参阅 下载 RubyGems 页面。

主要增强功能

  • 当 rubygems 可执行文件启动时,RubyGems 可以检查类库依赖项文件 (gem.deps.rb 或 Gemfile),并使用找到的依赖项。这意味着 Rake 会类似于 bundle exec rake。要启用此功能,请将 RUBYGEMS_GEMDEPS 环境变量设置为依赖项文件的位置。

    有关更多详细信息,请参阅 Gem::use_gemdeps。

  • 现在可以在多个 Ruby 版本中共享一个 RubyGems 目录。激活后,当缺少已构建对象时,RubyGems 会自动为当前平台编译缺失的扩展。由 Michal Papis 来解决 #596 问题

    默认情况下,不同的平台不会共享类库安装位置,因此必须通过将 GEM_HOME 设置为一个公共目录来配置此功能。一些类库会使用固定的路径来请求扩展,并且与共享类库目录不兼容。

    默认共享位置可以通过 Gem.default_ext_dir_for 由 RubyGems 打包器来配置。由 Vít Ondruch 来解决请求拉取 #744。

次要增强功能

  • 在将类库推送到公共代码库(例如 rubygems.org)时,RubyGems 会检查“allowed_push_host”元数据值,以防止意外推送。如果您有私有类库,则应在类库规范元数据中设置此值。由 Seamus Abshere 来解决请求拉取 #603。
  • gem list 现在会显示多个参数的结果。由 Zach Rabinovich 来解决请求拉取 #604。
  • gem pristine --extensions 将只会还原具有扩展的类库。由 Postmodern 来解决 #619 问题。
  • Gem::Specification#files 现在已排序。由 Justin George 来解决请求拉取 #612。
  • 对于 gem list 及其关联项,如果仅使用 -quiet 来请求本地或远程类库信息,则会省略“LOCAL”和“REMOTE”标题。由 Michal Papis 来解决请求拉取 #615。
  • 添加 Gem::Specification#full_require_paths,它和 require_paths 类似,但会返回一个完全限定的结果。Vít Ondruch 提交的 Pull 请求 #632。
  • 现在,RubyGems 会针对 https:// 源查找 https_proxy 环境变量。如果没有 https_proxy,RubyGems 将回退至 http_proxy。mkristian 提交的问题 #610。
  • 现在,RubyGems 会在 .gem 文件中创建目录。marksolaris 提交的问题 #631。
  • 如果某个规范包含其 gem,现在 RubyGems 会引发异常。notEthan 提交的问题 #623。
  • 更新 RubyGems 时,它现在会显示相关版本说明信息。Trevor Wennblom 提交的问题 #647。
  • 弃用 Gem::Installer::ExtensionBuildError,开始使用 Gem::Ext::BuildError。旧的常量是新常量的别名。
  • 现在,即使编译成功,也会始终写入 gem_make.out 文件。这有助于调试一直报告成功的错误编译。
  • 如果某个规范无法通过验证,RubyGems 会显示一个指向规范参考指南的链接。Markus Heiler 提交的问题 #656。
  • 现在,当使用 gem install -g 时,RubyGems 会检测是否存在 Isolate、Gemfile 或 gem.deps.rb 文件。
  • 添加 Gem::StubSpecification#stubbed?,以帮助确定用户是否应运行 gem pristine 来加快 gem 加载。Jon Leighton 提交的 Pull 请求 #694 和 #701。
  • 现在,当某个 gem 具有可能太严格的悲观版本依赖项时,RubyGems 会发出警告。
  • 现在,当某个 gem 具有开放式依赖项时,RubyGems 会发出警告。
  • 现在,当 gem 的依赖项被定义两次时,RubyGems 会引发异常。
  • 将许可规范属性标记为建议属性。Benjamin Fleischer 提交的 Pull 请求 #713。
  • 在可以使用时,RubyGems 使用 io/console 代替 stty。Nobuyoshi Nakada 提交的 Pull 请求 #740
  • 放宽了覆盖 Ruby 存放位置的平台的 Gem.ruby 测试。strzibny 提交的 Pull 请求 #755。

错误修复

  • 现在,当 gem which 给定的任何文件都无法找到时,RubyGems 会返回错误状态。Eugene Vilensky 提交的 Ruby 错误 #9004。
  • 修复编译 rake 扩展时命令转义问题。Dmitry Ratnikov 提交的 Pull 请求 #721。
  • 修复当 GEM_HOME 是相对目录时的 gem 卸载问题。Ryan Davis 提交的问题 #708。
  • 现在,Gem::Validator#alien 会忽略默认 gem。David Bahar 提交的问题 #717。
  • 修复 RubyGems 中的拼写错误。Akira Matsuda 提交的 Pull 请求 #723、#725、#731;Leo Gallucci 提交的 Pull 请求 #736;DV Suresh 提交的 Pull 请求 #746。
  • 现在,RubyGems 会对缓存的 gem 文件保持独占锁,以防止不正确的更新。Smit Shah 提交的 Pull 请求 #737
  • 提高了 gem install --ignore-dependencies 的速度。Terence Lee 提供的补丁。
Eric Hodel