2011-12-01 48 views
3

我想了解下面的Ruby /捆紮機/ RubyGems的之間的區別命令:各種方式來更新紅寶石寶石

  1. bundle install
  2. bundle update
  3. gem install my_gem.gem
  4. gem update my_gem.gem

假設my_gem託管在rubygems.org上。我運行的是Ruby 1.8.7,RubyGems 1.8.10和Bundler 1.0.21。我也有rvm 1.8.6可用(但我不確定rvm在更新寶石時是相關的)。

另外我使用git進行版本控制。我手動更新Gemfile是否合理?或者當上述命令之一運行時會自動發生?

回答

3

Gemfile是您更改添加/刪除/更新在您的應用程序中運行的寶石(或只是版本的寶石)。 Gemfile.lock是捆綁器自動更新的文件。實際上,您不應該嘗試手動更新Gemfile.lock:首先,因爲它是自動生成的,其次它不會被手動修改,而且如果您自己修改它,您可能會混淆bundler。

要回答你列出:

  1. bundle install安裝任何新的/更新的寶石和依賴 - 但如果他們已經安裝,沒有通過已安裝的寶石做
  2. bundle update運行,並抓住最新的,允許的版本,如您Gemfile
  3. gem install my_gem.gem繞過打捆定義,並在系統級安裝寶石(即你的應用程序的代碼包外)
  4. gem update my_gem.gem繞過捆綁器,並在系統級別更新寶石(即,您的應用程序的代碼包)

所以,一組命令安裝(如果尚未安裝),一組命令更新到最新版本已安裝的寶石外,一組命令做內的這些東西只有您的應用程序的範圍(您的應用程序代碼包)以及一組命令在系統級別執行這些操作。

Git與您的問題無關。