正式文档中描述的内容有点复杂。
它只是将以下行添加到.bundle/config
BUNDLE_PATH: vendor/bundle
然后执行bundle install
,就是这样吗? (然后安装将所有宝石安装到vendor/bundle
)
然后当应用程序运行时,它会在.bundle/config
中指定的路径中查找宝石,那就是它?
Update:
如果我使用Mercurial(类似于Git)来跟踪项目中的文件,那么在执行bundle install --deployment
之后,唯一的变化是添加到vendor / bundle的很多文件,以及已添加到.bundle/config
的2行:
BUNDLE_FROZEN: "1"
BUNDLE_PATH: vendor/bundle
答案 0 :(得分:9)
bundle install --deployment
确实将gem本地安装到应用程序的vendor/bundle
目录中。这通过您提到的路径设置中的配置更改(BUNDLE_PATH:vendor / bundle)反映出来。这种方法被称为“冻结”或“销售”宝石,它迫使应用程序使用本地安装的宝石,而不是全局系统宝石,这是部署的方便默认设置。如捆绑文档中所述:
“在部署中,隔离是一个更重要的默认设置。此外, 部署应用程序的用户可能没有安装权限 系统的宝石,或者Web服务器可能没有权限 读他们。“