博客
返回博文
2013 年 8 月 26 日
2.1.0 Release Candidate 2
RubyGems 2.1.0 即将发布新版,增加了许多新功能并进行了一些内部更改。如果您想要试用 RubyGems 2.1.0,可以使用以下命令进行安装:
gem update --system --prerelease
要降级到 RubyGems 2.0.7,运行
gem update --system=2.0.7
如果您在安装 2.1.0.rc.1 后需要更多有关如何降级 RubyGems 的说明,请参阅升级文档。
重大增强
- RubyGems 使用新的依赖项解析器来进行宝石安装,其类似于 bundler 解析器。新的解析器可以解决先前的解析器无法解决的冲突,并且会在发现冲突时提供改进的诊断信息。
次要增强
- RubyGems 现在改善了 ARM 架构的平台匹配。使用“arm”CPU 构建的宝石将匹配任何特定的 ARM CPU。有关详细信息,请参见
gem help platform
。修复 Kim Burgestrand 发现的 #532。 -
–version 选项现在接受复合要求,就像宝石依赖项中的要求一样。以下调用将在 rails 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
- 如果存在,RubyGems 通过 rbconfig.rb 的 make 优先使用
MAKE
或make
环境变量。Erik Hollensbe 提交的 Pull Request #443 - RubyGems 现在可以将远程源缓存文件保存在由
ENV["GEM_SPEC_CACHE"]
控制的另一个目录中。Michal Papis 提交的 Pull Request #489 - 生成的私钥已加密。Pietro 在 Pull Request #453 中添加
- Steve Klabnik 在 Pull Request #283 中将 Gem::Request 与 Gem::RemoteFetcher 分开。
- William T Nelson 在 Bug #519 中报告 RubyGems 在验证时指明 .gem 内容已损坏。
- Gastón Ramos 在 Pull Request #520 中重构了通用安装程序设置。
- Gastón Ramos 在 Pull Request #521 中将激活测试移动至 Gem::Specification。
- 如果给出带有预发布版本的 –version 选项,RubyGems 会自动启用预发布版本,但只使用最后一个版本。如果第一个版本是预发布版本,则这不适用于除非显式给出
--prerelease
或--no-prerelease
。修复部分 #531。 - RubyGems 现支持 SSL 客户端证书。Robert Kenny 在 Pull Request #550 中添加。
- RubyGems 现建议如何修复权限错误。Odin Dutton 在 Pull Request #553 中添加。
- Charles Nutter 在 Pull Request #566 中添加了将 gem 安装为 Ruby 备用实现的默认 gem 的支持。
- Charlie Somerville 在 Pull Request #569 中通过缓存加载的 gemspec 改善了 Gem::Specification#load 的性能。
- 即使安全策略允许未签名的 gem,如果在安装时给出 -P,RubyGems 现会在验证时对未签名 gem 发出警告;即使安全策略允许不受信任的证书,也会在看到不受信任的证书时发出警告。Issue #474 由 Grant Olson 提交。
- RubyGems 现在可以通过
gem pristine --all --only-executables --env-shebang
(或--no-env-shebang
)使用或不使用 /usr/bin/env 的 shebang 重写可执行文件。Issue #579 由 Paul Annesley 提交。 - RubyGems 现在可以不使用 OpenSSL 运行其测试。Ruby Bug #8557 由 nobu 提交。
- 通过缓存 Gem::Version 对象和避免在 Gem::Specification 中使用 method_missing 改善了性能。Jon Leighton 在 Pull Request #447 中添加。
- Jesse Bowes 在 Pull Request #582 中报告 .gem 中的文件现保留其修改时间。
- Andras Suller 在 Pull Request #595 中通过 Array#bsearch(存在时)改善了在 SpecFetcher 中查找依赖项的速度。
- Shannon Skipper 在 Pull Request #584 中向
gem uninstall
添加了--all
选项,该选项删除 GEM_HOME 中的所有 gem。 - Ryan Davis 在 Issue #186 中添加了 Gem.find_latest_files,它与 Gem.find_files 等效,但只返回每个 gem 的最新版本的匹配文件。
- 通过减少重复工作改善了
gem outdated
的性能(它仍然很慢,但在快速连接中对 250 个 gem 进行了改进,我看到提高了近 50%)。另请参阅 Gem::Specification::outdated_and_latest_version
错误修复
- rubygems_plugin.rb 文件现只从最新安装的 gem 中加载。