2013-07-06 140 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'。 –