Rails 3的Bundler中的"bundle install --deployment"具体是做什么的?

13

官方文档中描述的内容有些复杂。

它仅仅是将以下行添加到.bundle/config吗?

BUNDLE_PATH: vendor/bundle

接着执行 bundle install,然后就可以了吗?(安装将所有gem包安装到vendor/bundle中)

那么当应用程序运行时,它会在.bundle/config中指定的路径中查找gem包,然后就可以了吗?

更新: 如果我使用类似Git的Mercurial来跟踪项目中的文件,那么在执行 bundle install --deployment后,唯一的更改是向 vendor/bundle添加了许多文件,并且在.bundle/config中添加了2行:

BUNDLE_FROZEN: "1"
BUNDLE_PATH: vendor/bundle
1个回答

9

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接