RubyGems 导航菜单

博客

返回博客文章

2.2.0 发布

RubyGems 2.2.0 包含重大增强、次要增强和 bug 修复。

要更新到最新版 RubyGems,可以运行

gem update --system

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

特别感谢 Vít Ondruch 和 Michal Papis 在 RubyGems 为 2.2.0 版本做准备的过程中进行测试并发现漏洞。

重大增强

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

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

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

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

    默认共享位置可以通过 Gem.default_ext_dir_for 由 RubyGems 打包程序进行配置。由 Vít Ondruch 提供的请求拉取 #744。

次要增强

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

Bug 修复

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