2013-07-06 135 views
3

新机器。新的rbenv安装。新的rbenv-gemset安装。新的ruby-2.0.0安装。新的轨道4.0.0应用程序。捆绑安装后不在当地宝石中的宝石

当我

$ bundle install 

从Rails应用程序目录,我得到

Your bundle is complete! 
It was installed into ./vendor/bundle 

但是,如果我再

$ gem list 

没有一个是所谓安装的宝石现身。

我已经运行

$ rbenv rehash 

这是为什么会这样?

附加信息:

$ which bundle 
/usr/local/var/rbenv/shims/bundle 
$ rbenv which bundle 
/usr/local/var/rbenv/versions/2.0.0-p247/bin/bundle 
$ rbenv which ruby 
/usr/local/var/rbenv/versions/2.0.0-p247/bin/ruby 
$ ruby --version 
ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-darwin12.4.0] 
$ rbenv gemset active 
blog 
$ which rails 
/usr/local/var/rbenv/shims/rails 
+2

'gem list'不显示安装在供应商中的捆绑宝石。改为尝试“捆绑列表”。 'gem'!='bundle'。 – Casper

回答

4

你在这个应用程序默认是安装到vendor/bundle。你可以通过It was installed into ./vendor/bundle这个文字在安装gems后看到。

Bundler documentation规定,你必须通过--system在系统位置安装:

--system: Install to the system location ($BUNDLE_PATH or $GEM_HOME) even 
      if the bundle was previously installed somewhere else for this 
      application 

编辑:更多的解释是,你的Ruby只知道关于不使用bundle exec时--system选项安装宝石。您可以从vendor/bundle或通过运行bundle exec gem list或(如Casper注意到的)bundle list中选择的任何路径看到您的宝石。现在,您是否希望在系统位置或应用程序目录中找到您的宝石。

+0

谢谢。 好吧,假设我想要我的应用程序目录中的宝石,我该如何将应用程序的rbenv gemset连接起来? – dpdawson

+0

如果你的宝石只在一个应用程序的范围内,为什么你需要gemset?我猜你不能同时使用gemset和'--path'选项。试试'bundle --system',然后你的宝石应该在宝石中。 – Lucas

+0

'bundle list'列出了为例如安装的所有宝石。为capistrano部署的应用程序。默认情况下,对于capistrano部署的应用程序,gem会安装在'/ /shared/bundle/ruby​​'文件夹下。从'/current'文件夹像'/current $ gem list'运行'gem list'只是列出全局安装的gem。要查看为应用程序安装的gem列表,我们应该运行'/current $ bundle list'。 –