博客
返回博客文章
2013 年 2 月 8 日
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。