以前好像没怎么注意,今天注意了解一下,发现两个的差别 应该是 bundle update 会去检查 Gemfile 里 gem 的更新,然后对比 lock 文件,如果 Gemfile 里没有指定版本或是指定是>=的版本,那有新版本就会去安装新的版本的 gem,然后更新 lock 文件。 而 bundle install 以 Lock 文件为优先,为本地系统安装 Lock 文件中指定的版本,而去检查 Gemfile 中有而 Lock 中没有的,安装之。Install 好像不去管网络中 Gem 版本的更新。
这样的结果就是如果本地已经有这个 Gem,而与 Gemfile 没有什么冲突,那么 Bundle install 能很快的完成。而 Bundle update 会很慢。
并且,如果我们需要一个稳定的 Gem 版本结构,那最好就是使用 bundle install 安装新的 Gem,而不是使用 Bundle update,因为那样会出现一些 gem 偷偷 Update,给项目带来一些不必要的问题,毕竟我们真的不知道哪位大大在更新 Gem 的时候会引入什么的变化和 Bug,还是保持原来的好,毕竟跑了很久,没有问题。如果确实需要哪个 Gem 的更新,就单独 Bundle update gemname 那个 Gem,然后跑一下测试再往下。
这是我的看法,但看好多的文章教程都是用 Bundle update,我不知道是不是我的理解错误,Update 还有什么别的能力。不知道大家都习惯用哪个?why?