"bundle install --deployment" 和 "bundle install --path vendor/bundle" 的区别?

Difference between "bundle install --deployment" and "bundle install --path vendor/bundle"?

bundle install --deploymentbundle install --path vendor/bundle到底有什么区别?

我已经阅读了下面的 link,它解释了部署模式的作用,但我仍然不确定,因为这两个命令都会将 gem 安装到路径 vendor/bundle。 我模糊的理解是 --deploymentGemfile.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 的目标文件夹相同)。您的示例中的主要区别在于,如果您的 Gemfile 已更改,bundle install 将尝试更改您的 Gemfile.lock

Bundler 在部署模式下安装到 vendor/bundle 的原因是常规 bundle install 会将 gem 安装到每个项目使用的共享文件夹。最好隔离项目和部署之间的依赖关系。