bundle install --deployment
和bundle install --path vendor/bundle
究竟有什么区别?
我已经阅读了下面的链接,它解释了部署模式的作用,但我仍然不确定,因为这两个命令都将gems安装到路径vendor/bundle
。我模糊的理解是,--deployment
将Gemfile.lock
设置到位,因此无法再更新。但如果我错了,请纠正我。
https://bundler.io/man/bundle-install.1.html#DEPLOYMENT-MODE
基本上,bundle install --deployment
甚至没有看你的Gemfile
,只会安装你的Gemfile.lock
的所有依赖项(如果你的Gemfile.lock
有依赖性问题,将会失败)。 bundle install --path
使用特定目标文件夹(在您的示例中,与bundle install
的目标文件夹相同)执行常规bundle install --deployment
。你的例子的主要区别在于,如果你的bundle install
发生了变化,Gemfile.lock
会尝试改变你的Gemfile
。
Bundler在部署模式下安装到vendor/bundle
的原因是常规bundle install
会将gem安装到每个项目使用的共享文件夹中。最好隔离项目和部署之间的依赖关系。