2013-12-16 51 views
11

在我們的Rails 3.2 Gemfile,也有一些寶石,選項:git指向安裝回購上github,如:爲什麼`gem list`命令不包含使用bundler's:git選項安裝的gem?

gem 'ruote', :git => 'http://github.com/jmettraux/ruote.git' 

bundle install後,我們輸入gem list列出安裝的所有寶石。但gem list未列出ruote作爲已安裝的gem。事實上,根本沒有列出ruote。我們注意到所有與一起安裝的選項:git指向github上的repo也會發生同樣的情況。爲什麼寶石列表沒有列出所有安裝的寶石?我們如何確保ruote安裝正確?

回答

18

根據Bundler Documentation,來自git源的寶石將不會顯示在gem list中,因爲gem命令無法處理它們,所以Bundler必須自行完成所有工作。 Bundler將這些寶石存儲在自己的位置。 (請注意,此位置與當前項目無關,默認爲~/.bundler/...。)

如果bundle install完成且沒有錯誤,您可以看到它已安裝。您還可以使用bundle show查看Bundler爲您設置的寶石列表。

+1

但是,你如何使用這些寶石?我的意思是,一個簡單的'要求'找不到它們。 – refaelos

+0

@refaelos使用'bundle exec'運行你的應用程序,然後一個簡單的'require'就是你所需要的。 –

+0

謝謝@Moshe Katz!我注意到,也需要在文件內部進行捆綁/設置。 – refaelos

0

gem list向您顯示安裝在您機器上的所有寶石。

如果您的寶石的位置與Ruby的寶石不同,Bundler會將這些位置存儲在項目的本地而不是系統範圍內。

+0

如果使用'--deployment','bundler'只在項目的本地存儲寶石。 –

1

gem list不是顯示爲應用程序安裝的gem的正確方式,因爲它會顯示系統級的寶石。

要檢查此應用程序及其版本的寶石,請檢查Gemfile.lock。你會在那裏獲得最精確的信息。