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

时间:2010-09-10 00:54:19

标签: ruby-on-rails ruby-on-rails-3 bundler

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

它只是将以下行添加到.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

1 个答案:

答案 0 :(得分:9)

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

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