2013-11-26 100 views
2

我有一個Ruby on Rails應用程序,我正在使用Ruby版本管理器。我可以使用bundle updategem update更新寶石嗎?他們做同樣的事情嗎?「bundle update」和「gem update」有什麼區別?

+0

同時詢問和回答這個問題的目的是什麼? – zeantsoi

+2

請仔細閱讀爲什麼問和回答你自己的問題並不是問題,這裏明確地鼓勵你:http://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your -own-問題/。也就是說,你會注意到我還沒有接受答案,因爲我將問題提交給社區,以檢查它是否完整和正確。 –

+0

問題在http://stackoverflow.com/questions/4604064/rubygems-bundler-and-rvm-confusion與這有點相關,但實際上完全不符合這個問題的目的。 –

回答

6

的主要區別是,RubyGems的(用命令gem調用)管理所有的寶石(gemsets如果您正在使用RVM)對一臺機器,而捆紮機bundle)管理寶石單個集應用程序(其目的是部署在多臺機器上)。

的Ruby版本管理rvm)只是簡化了同一臺機器上管理不同的寶石版本的任務,但除非你想命名爲特定應用的寶石(見named gemsets)它不是應用程序相關。

兩者都將忽略之前安裝的任何寶石,並根據源中可用的所有寶石的最新版本再次解析所有依賴項。然而,Bundler,不像Rubygems,只會更新應用程序的Gemfile中指定的寶石和依賴項,並遵守其限制(版本號和spermise)。

也就是說,您應該使用bundle install而不是bundle update,以確保您在機器上安裝了相同的精確寶石和版本。

+1

您*應*在您的Gemfile中使用版本號(或spermies)以避免此問題。 –

+0

命令名是Rubygems。你用來執行它的命令是'gem'。您可能想要解決這個問題,另外,花時間格式化文本以使其更具可讀性。 –

+0

謝謝你指出。我編輯了答案。 –

相關問題