Bil*_*han 79

bundle update并且bundle install可以安装您在Gemfile中指定但在gem中缺少的gem.

bundle update升级还有一件事:

  1. 如果Gemfile中指定的gem没有版本,它将升级到最新版本.
  2. 如果Gemfile中指定的gems具有受版本控制的版本~>,则它将升级到最后一位数字的补丁版本.

    例如,如果你在Gemfile中有一个gem

    'foo_gem', '~> 2.1.0'
    
    Run Code Online (Sandbox Code Playgroud)

    bundle update将检查云中是否有更新的2.1.x版本.假设您当前的版本是2.1.2,云中的最新版本是2.1.5,它将安装2.1.5.但如果2.2.6是最新的,它将不会做任何事情.

我认为更好的做法

  1. 始终将版本添加到关键宝石中rails.

  2. 在大多数情况下坚持bundle install(或bundle默认install).只有bundle update在真正需要的时候才做,并且你已经为结果做好了充分的准备.

  • @ shuffla90,在这种情况下,'捆绑install`仍然会安装最新的宝石2.1.5说,如果你不具备这种宝石.但是,如果你已经在2.1.1拥有这个gem,那么`bundle install`什么都不做. (4认同)
  • @zack,原因是最新版本可能会更好,但不能保证与你的应用程序很好地协作.某些API可能会更改,某些API可能会被弃用,某些结果可能会以不同方式返回.除非你研究过文档,否则你永远不会知道 最好只在真正需要的时候进行升级. (2认同)

Den*_*ler 6

Bundle Update指定的gem(所有gems,如果没有指定),忽略Gemfile.lock中指定的先前安装的gem.通常,您应该使用bundle install跨机器安装相同的gems和版本.