RubyGems 导航菜单

博客

返回博客文章

2.1.0 发布候选版本 1

RubyGems 2.1.0 将包含新功能。若要升级到 RubyGems 2.1.0.rc.1,请运行

gem update --system --prerelease

若要降级到 RubyGems 2.0.6,请运行

gem update --system=2.0.6

如果你需要在安装了 2.1.0.rc.1 后进一步了解 RubyGems 降级说明,请参阅 升级文档。

主要增强功能

  • RubyGems 为宝石安装使用了新的依赖项解析器,该解析器的作用类似于 Bundler 解析器。新的解析器可以解决先前解析器无法解决的冲突,并且可以在发现冲突时提供经过改进的诊断。

次要增强功能

  • RubyGems 现在改进了对 ARM 架构的平台匹配。使用“arm”CPU 构建的宝石将与任何特定 ARM CPU 匹配。请参阅 gem help platform 了解更多详情。Kim Burgestrand 修复了错误 532。
  • –version 选项现在接受复合需要,就像在宝石依赖关系中一样。以下调用将在 4.0.0.beta 和 4.2 之间安装 Rails

    gem install rails -v '>= 4.0.0.beta, < 4.2'
    

    Gary S. Weaver 修复了错误 531

  • gem clean 现在允许 -n 作为 --dryrun 的别名。Gastón Ramos 发起的 Pull Request #517
  • gem help 中添加了 gem update --system。Vince Wadhwani 发起的 Pull Request #514
  • gem env 输出中添加了 PATH。Michal Papis 发起的 Pull Request #490
  • gem owner 中添加了 –host 选项,以与使用 gemcutter API 的其他命令相匹配。Hugo Lopes Tavares 发起的 Pull Request #462 和问题 #461
  • gem uninstall 中添加了 –abort-on-dependent。这将中止,而不是询问是否卸载另一个宝石所依赖的宝石。Philip Arndt 发起的 Pull request #549。
  • 安装时,RubyGems 不再修改 Gem::Specification.dirs。基于 Vít Ondruch 发起的 Pull Request #452
  • 如果环境变量 MAKEmake 存在,则 RubyGems 使用这些环境变量,而不是 rbconfig2.rb 中的 make。Erik Hollensbe 发起的 Pull Request #443
  • RubyGems 现在可以将远程源缓存文件保存在由 ENV["GEM_SPEC_CACHE"] 控制的备用目录中。Micha Papis 提出的请求 #489
  • 生成的私钥现在已加密。pietro 提出的请求 #453
  • 将 Gem::Request 与 Gem::RemoteFetcher 分离开来。Steve Klabnik 提出的请求 #283。
  • RubyGems 现在会在验证时指出 .gem 内容是否损坏。William T Nelson 提出的问题 #519。
  • 重构了常见安装程序设置。Gastón Ramos 提出的请求 #520
  • 将激活测试移到了 Gem::Specification。Gastón Ramos 提出的请求 #521
  • 如果给定包含预发布版本的 –version 选项,RubyGems 就会自动启用预发布版本,但只会使用最新版本。如果第一个版本是预发布版本,那它不再具有粘滞性,除非明确给出了 --prerelease--no-prerelease。修复了 #531 的一部分。
  • RubyGems 现在支持 SSL 客户端证书。Robert Kenny 提出的请求 #550。
  • RubyGems 现在建议如何修复权限错误。Odin Dutton 提出的请求 #553。
  • 添加了安装 gem 作为备用 ruby 实现的默认 gem 的支持。Charles Nutter 提出的请求 #566。
  • 通过缓存已加载的 Gem 规范,提高了 Gem::Specification#load 的性能。Charlie Somerville 提出的请求 #569。
  • 如果安装过程中给定了 -P,RubyGems 现在会在安全策略允许未签名 gem 的情况下警告未签名 gem 已通过验证,并在安全策略允许不受信任证书的情况下警告已看到不受信任证书。Grant Olson 提出的问题 #474
  • RubyGems 现在可以通过 gem pristine --all --only-executables --env-shebang(或 --no-env-shebang)有或没有 /usr/bin/env shebang 来重写可执行文件。Paul Annesley 提出的问题 #579。
  • RubyGems 现在可以在不使用 OpenSSL 的情况下运行测试。nobu 提出的 Ruby 问题 #8557。
  • 通过缓存 Gem::Version 对象和避免 Gem::Specification 中的 method_missing,提高了性能。Jon Leighton 提出的请求 #447。
  • .gem 中的文件现在会保留它们自己的修改时间。Jesse Bowes 提出的请求 #582
  • 通过 Array#bsearch(如果存在)提高了在 SpecFetcher 中查找依赖项的速度。Andras Suller 提出的请求 #595。
  • gem uninstall 添加了 --all 选项,该选项会移除 GEM_HOME 中的所有 gem。Shannon Skipper 提出的请求 #584。
  • 添加了 Gem.find_latest_files,这与 Gem.find_files 等效,但只会返回来自每个 gem 最新版本的匹配文件。Ryan Davis 提出的问题 #186。
  • 通过减少重复工作,提高了 gem outdated 的性能(它仍然很慢,但在快速连接的 250 个 gem 上,我看到了接近 50% 的提升)。另请参阅 Gem::Specification::outdated_and_latest_version

错误修复

  • 现在,rubygems_plugin.rb 文件仅从最新安装的 gem 中加载。
  • 更改了在测试套件中使用加密算法以在 JRuby 上运行的方式,但某些测试在 JRuby 上仍然失败。Hemant Kumar 的问题 606。
Eric Hodel