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服务器可能没有读取它们的权限。”