13

正式文档中描述的东西有点复杂。

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

BUNDLE_PATH: vendor/bundle

然后执行 a bundle install,就这样?(安装然后将所有的宝石安装到vendor/bundle

然后当应用程序运行时,它会在 中指定的这个路径中寻找 gems,.bundle/config就这样吗?

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

BUNDLE_FROZEN: "1"
BUNDLE_PATH: vendor/bundle
4

1 回答 1

9

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

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

于 2010-09-12T01:07:56.333 回答