我正在使用Spring application preloader,只是升级到v 0.9.0。现在我收到以下警告:
警告:运行
gem pristine --all
重新生成已安装的gemspec将改善Spring的启动性能。
我尝试运行该命令,但无法安装我的一些宝石,这可能与我最近升级到OS X Mavericks有关。我如何摆脱这个警告?
答案 0 :(得分:15)
这是因为以前版本的rubygems会在查询时加载所有gemspec。
开始时速度很慢,安装的宝石越多,速度越慢。
但是使用Rubygems 2.1,它有一个“存根”的gemspec,加载速度非常快。有关详细信息,请参阅https://github.com/rubygems/rubygems/pull/435。
春天人们利用这个来加载每个gemspec时只需加载bin / spring,它只使用一小部分来调用弹簧服务器。
它正在进行的测试(假设你有RubyGems 2.1或更高版本)基本上是:
ruby -e 'p Gem::Specification.stubs.reject(&:stubbed?).reject(&:default_gem?).map(&:name)'
如果该列表不是空的,它就知道你有更老的宝石;安装RubyGems的宝石< 2.1。
您可以使用该信息生成运行gem pristine
的宝石列表:
# /tmp/dirty.rb
require 'shellwords'
Gem::Specification.stubs.reject(&:stubbed?).reject(&:default_gem?).each do |gemspec|
puts "gem pristine #{Shellwords.escape gemspec.name} --version #{Shellwords.escape gemspec.version.to_s}"
end
然后运行:
ruby /tmp/dirty.rb | bash
但运行gem pristine --all
更容易,而@Beerlington提到,gem uninstall
任何宝石都会给它带来问题。
答案 1 :(得分:5)
我并不完全理解source of the issue,但我能够通过删除未能安装的宝石然后重新运行gem pristine --all
来消除警告。这可能不是一个大问题,但我想我会发布我的解决方案以防其他人遇到同样的问题。