Bundler和隐藏的宝石

时间:2012-03-15 04:23:16

标签: ruby-on-rails ruby rubygems capistrano bundler

直接从github(:git => 'whatever')安装gems时出现了一个有趣的错误。

首先,当我删除所有宝石并运行捆绑安装命令时,我会得到以下内容:

Installing gem1
Installing gem2
Using gem3 (the one from github)

然后当我想查看我的内容时,我会使用宝石列表看到以下内容:

gem1 (x.x.x)
gem2 (y.y.y)

没有gem3 ......现在,靠近文件系统,我看到以下内容:

ls -l ~/.rvm/gems/ruby-1.9.3-p125/gems
gem1
gem2

那么宝石3在哪里?不是我期待它的地方:

ls -l ~/.rvm/gems/ruby-1.9.3-p125/bundler/gems
gem3-213213213

所以它属于bundler / gems并且 gem list 不可见......并且通过Capistrano部署可以看到:

git://github.com/author/gem3.git (at master) is not checked out. Please run `bundle install`

我更担心卡皮斯特拉诺无法部署......任何人都有任何线索?

1 个答案:

答案 0 :(得分:1)

Bundler从您系统上的各种来源获取宝石。只要它们是正确的版本,它就会将它们拉进去。

部署时,它具有更严格/保守的行为。

bundle help install开始,在指定--deployment标志时使用的部署模式部分中:

  

Gems安装到vendor / bundle而非您的默认系统位置   灰

     

在开发过程中,分享您使用的宝石很方便   应用程序与其他应用程序和其他脚本运行   系统

     

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

     

因此,捆绑安装 - 部署将宝石安装到   应用程序中的dor / bundle目录。这可能会被覆盖   使用--path选项。