RubyGems 导航菜单

博客

返回博客文章

2.0.0.rc.2 已发布

作为一个预览版本,请将遇到的任何关于 RubyGems 的问题提交至 https://github.com/rubygems/rubygems/issues 中。要更新到此预览版本,请使用

gem update --system=2.0.0.rc.2

RubyGems 2.0 包含了若干新功能和许多重大修订。其中部分修订将导致现有软件崩溃。这些修订是对 RubyGems 内部功能改进的结果,使之更易于维护并改进了 RubyGems 用户的 API。

如果你正在使用 Bundler,请务必安装版本 1.3.0.pre。较早版本的 Bundler 将无法和 RubyGems 2.0 配合工作。

自 RubyGems 1.8.25 以来(包括过去的预发布)出现的修订

重大修订

  • 废除 Gem.unresolved_deps,使用 Gem::Specification.unresolved_deps 取代
  • 将 Gem::Builder 合并到 Gem::Package 中。使用 Gem::Package.build(spec) 代替 Gem::Builder.new(spec).build
  • 将 Gem::Format 合并到 Gem::Package 中。使用 Gem::Package.new 代替 Gem::Format.from_file_by_path
  • 将 Gem::OldFormat 移至 Gem::Package::Old。Gem::Package 会自动为你检测旧软件包,因此无需再引用该方法。
  • 删除 Gem::DocManager,由 Gem::RDoc 和 done_installing 挂钩替代
  • 删除 Gem::Package::TarInput,使用 Gem::Package 取代
  • 删除 Gem::Package::TarOutput,使用 Gem::Package 取代
  • 删除 Gem::RemoteFetcher#open_uri_or_path。(steveklabnik)
  • 删除 Gem::SSL,使用 OpenSSL 直接替代
  • 删除 Gem.loaded_path
  • 从软件包索引中删除 RSS 生成
  • 从 .gemrc 中删除 benchmark 选项
  • gem build 中删除损坏的 YAML 软件包规范支持
  • 删除对 Ruby 1.9.1 的支持
  • 删除许多已废弃的方法

重大增强

  • 提高对 Ruby 2.0.0+ 中默认软件包的改进支持
  • 软件包可以通过 Gem::Specification#metadata 具有任意元数据
  • gem search 现在默认为 –remote,并且像 gem list 一样锚定。修复 #166
  • 添加 –document 来替换 –rdoc 和 –ri。使用 –no-document 禁用文档,–document=rdoc 仅生成 rdoc。
  • 默认仅生成 ri 格式的文档。
  • gem server 使用来自 RDoc 4.0 的 RDoc::Servlet 来生成 HTML 文档。
  • 添加直接从兼容 Gemdep 文件(Gemfile、Isolate、gem.deps.rb)安装软件包的功能 gem install --file path
  • 添加加载宝石激活信息的功能,该信息可从 gemdeps 文件(Gemfile、Isolate、gem.deps.rb)获取。设置 RUBYGEMS_GEMDEPS=路径即可加载。使用 - 作为路径来自动检测(搜索当前目录和父目录)。

次要增强功能

  • 添加 gem check --doctor 以清理卸载失败后的数据。故障 #419,作者:Erik Hollensbe
  • 如果卸载会导致依赖项损坏,RubyGems 将不再默认卸载宝石。现在你必须手动输入“yes”。请求拉取 #406,作者:Shannon Skipper。
  • Gem::DependencyInstaller 现在会向安装程序传递 build_args。请求拉取 #412,作者:Sam Rawlins。
  • 添加 cmake 构建器。请求拉取 #265,作者:Allan Espinosa。
  • 从宝石列表输出中移除 rubyforge 页面
  • gem pristine 中添加 –only-executables 选项。修复 #326
  • 为 “gem query” 添加 -I 标志,以排除已安装的项
  • 添加 Gem.install(name, version=default) 用于交互式会话
  • 添加 Gem::FilePermissionError#directory
  • 添加 Gem::rubygems_version,类似于 Gem::ruby_version
  • gem env 添加 RUBYGEMS_HOST 文档
  • 添加一个 post_installs 挂钩,该挂钩将在 Gem::DependencyInstaller 完成一组宝石的安装后运行
  • 为 Gem::Commands::OwnerCommand 添加使用方法。(ffmike)
  • 向 Gem::Specification#doc_dir 添加一个可选的类型参数。
  • 添加公告网址,并阐明如何提交工单
  • 添加如何使用 rdoc 和 ri 在设置命令中的指南。(jjb)
  • 现在,尝试使用 –version 安装多个宝石被视为一个错误。你可以指定每个宝石的版本,例如 rake:0.9.5
  • 阐明 Gem::CommandManager 示例代码,以避免多重加载问题。(baroquebobcat)
  • 损坏或错误的缓存规范现在已重新下载。(cookrn)
  • 扩展构建参数现在可以从安装中保存并重复用于 pristine
  • 如果操作系统允许,文档将在分叉后台进程中构建。(alexch)
  • 从 gemcutter 宝石导入宝石 yank。修复 #177、#343
  • 打包的宝石现在包含并验证 SHA1 校验和
  • 从宝石更新摘要中移除逗号,以便你可以将其粘贴回去清理。(amatsuda)
  • RubyGems 现在将在使用预发布依赖项构建宝石时发出警告。修复 #255
  • RUBYGEMS_HOST 环境变量用于确定用于推送或 yank 宝石的合适的 API 密钥
  • 卸载现在按逆拓扑顺序执行。
  • 当用户尝试卸载 GEM_HOME 之外的宝石时,会告知他们应输入什么
  • 使用不可在全世界读取的文件构建宝石时,会显示一个警告。

错误修复

  • Gem.refresh 现在维护活动宝石列表。清除列表会导致重复加载,从而导致其他错误。请求拉取 #427,作者:Jeremy Evans
  • 如果宝石推送证书文件的权限不安全,RubyGems 现在会拒绝读取该文件。请求拉取 #438,作者:Shannon Skipper
  • RubyGems 现在要求本地宝石名称以“gem”结尾。问题 #407,作者:Santiago Pastorino。
  • 不允许使用验证数据的安全策略来安装旧格式的 gem。
  • 如果 RubyGems 无法从 gem 加载规范,则 gem 安装会失败。Erik Hollensbe 发现的错误 #419
  • 现在以 FIPS 模式运行 RubyGems 测试。Vít Ondruch 发现的问题 #365
  • 仅在有权限时更新规范缓存。Ruby 错误 #7509
  • 现在,gem install 将忽略与要安装的 gem 匹配的目录和非 .gem 文件。Santiago Pastorino 发现的错误 #407。
  • 在安装 RubyGems 时将 PID 添加到设置 bin_file 中以防止错误。ConradIrwin 修复的错误 #328
  • 设置 format_executable 时在 Gem::Uninstaller 中添加缺失的 require。(sakuro)
  • 现在选择完全匹配的 gem 命令名称,即使较长的命令与完全名称重叠
  • 使用 Pathname 实例修复了 Gem.loaded_path?。(mattetti)
  • 修复了 Gem::Dependency.new 与 rubygems.org 检查不匹配。
  • 当 $SAFE=1 时,修复了 Gem::Specification.load 中的 SecurityError。(ged)
  • 修复了 1.9 中“gem list -r -a”的 SystemStackError。(cldwalker)
  • 修复了 gem owners 命令,使其异常不会阻止其余命令运行
  • 修复了 gem unpack uninstalled_gem 默认版本选择器。
  • 修复了 gem 命令行帮助中的已失效 rubyforge url
  • 修复用于各种挂钩集合的文档
  • 不存在 gem 目录时,修复了设置中的文档生成。修复了错误 #253
  • 修复了文档,以反映从何处加载了默认覆盖。(ferrous26)
  • 修复了 8 位字符 Makefile 的编辑。修复了错误 #181
  • 修复了因依赖项无法解析而导致的 gem 加载问题。
  • 修复了 test_gem_package_tar_output 的独立测试。Shota Fukumori 发现的 Ruby 错误 #4686
  • 修复了卸载消息中的拼写错误。(sandal)
  • Gem::Requirement#<=> 在非需求参数上返回 nil。
  • 如果给出了非版本参数,Gem::Requirement.satisfied_by? 将引发 ArgumentError
  • Gem::Version#initialize 不再修改其参数。(miaout17)
  • 现在允许对 gem 存储库进行组可写权限。(ctcherry)
  • 现在,当版本或平台更改时,会重置 Gem::Specification 中的缓存值。修复了错误 #78
  • 现在会因不良需求而引发更具体的错误。(arsduo)
  • 从文档中删除了对“sources”gem 的引用
  • 删除了未使用的块参数,以避免创建 Proc 对象。(k-tsj)
  • 现在,RubyGems 会在覆盖可执行包装器之前询问。Ruby 错误 #1800
  • 现在,在安装过程中使用 mkdir_p 创建 bindir。(voxik)
  • URI 架构匹配不再区分大小写。修复了错误 #322
  • ext/builder 现在会同时检查 $MAKE 和 $make (okkez)

自 RubyGems 2.0.0.rc.1 以来的更改

错误修复

  • 修复了仅在 master 中中断的 gem 签名验证。感谢 Brian Buchanan。
  • 验证未签名 gem 时会引发适当的异常。感谢 André Arko。
Eric Hodel