Rails 3的Bundler“捆绑安装 – 部署”到底做了什么?

正式文档中描述的内容有点复杂。

它只是.bundle/config下行添加到.bundle/config

 BUNDLE_PATH: vendor/bundle 

然后执行bundle install ,就是这样吗? (然后安装将所有gem安装到vendor/bundle

然后,当应用程序运行时,它将在.bundle/config指定的此路径中查找gems,那就是它?

Update:如果我使用Mercurial(类似于Git)来跟踪项目中的文件,那么在执行bundle install --deployment ,唯一的更改是添加到vendor / bundle的很多文件,并且添加了两行.bundle/config

 BUNDLE_FROZEN: "1" BUNDLE_PATH: vendor/bundle 

bundle install --deployment确实将gem本地安装到应用程序中的vendor/bundle目录。 这通过您提到的路径设置中的配置更改(BUNDLE_PATH:vendor / bundle)反映出来。 这种方法被称为“冻结”或“销售”gem,它强​​制应用程序使用本地安装的gem,而不是全局系统gem,这是部署的方便默认值。 如捆绑文档中所述:

“在部署中,隔离是一个更重要的默认设置。此外,部署应用程序的用户可能没有权限将gem安装到系统,或者Web服务器可能没有读取它们的权限。”