Bundler下载系统中存在的宝石?

时间:2014-01-17 19:43:00

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4 bundler

我在想,为什么Bundler总是会下载已存在于我的gemset中的宝石?我的意思是,每次运行rails newbundle install命令后,bundler都会下载系统中存在的相同gem。现在,我知道--local选项可以防止此行为,但只是如果它能够首先做一个简单的检查,那真的很有意义。

编辑:对不起伙计们,看来捆绑包实际上正在使用系统中的宝石。我想其他因为他花了20秒才完成,但这是因为我的互联网速度非常慢,可能花了很多时间解决依赖关系。

2 个答案:

答案 0 :(得分:0)

除非其中一件事情成立,否则Bundler不会重新获取宝石:

  • 您没有安装相同的gem和相同版本(或允许的版本范围)。
  • 您正在为不同的项目使用RVM和不同的gemsets,而不是将它们放在全局gemset中。
  • 宝石路径不在Bundler使用的搜索路径中。

如果这对您来说是一个问题,您可以使用--local来强制Bundler永远不要寻找其他任何东西,但您也可以指定所有宝石的版本。并确保正确的版本位于 Gemfile.lock

最后,Bundler只做你告诉它做的事情。当然,你也不能使用Bundler。

答案 1 :(得分:0)

bundle install的默认值是--system选项,它将在系统范围内安装,因此也会使用现有的宝石。

如果你使用像rvm这样的东西,你就不会看到这种行为。另请注意,bundler会记住为path等一些参数提供的先前参数。如果它之前用于某个应用程序,它将被记住以备将来调用。

--local将使用本地缓存 - http://bundler.io/v1.5/man/bundle-install.1.html