回答
他們服務於不同的目的。 RVM創建一個沙箱來管理你的Ruby安裝。作爲其中的一部分,它也可以讓你定義gemsets。
Bundler不管理你的Rubies,它與當前選定的Ruby一起工作。
所以,我覺得你應該考慮RVM作爲開發環境配置管理器,並捆綁寶石經理的應用程序。
編輯:更多的想法 -
無論我們使用RVM與否,通常我們不得不來加載所有我們要使用手動應用程序的寶石,使用gem install blah
爲每我們想用的寶石。
我最終通過手動管理我的寶石跨多個紅寶石。安裝完成後,我可以使用RVM創建gemset,但如果沒有安裝gemm,RVM將不會自動檢索gem的特定版本,或者如果它被刪除,則再次獲取它。由於RVM更關心Ruby環境,因此它主要將寶石版本設置爲gem
和我們。
捆紮機,在另一方面,確實有關RVM那些缺失的部分護理。當您爲捆綁器創建Gemfile時,它將檢索必要的寶石和指定的特定版本。因此,在另一臺機器上安裝Ruby應用程序的任務變得更加簡單。將文件推送到另一臺機器上,然後運行bundle install
,剩下的就完成了。
它與Rails很好地協作,並且是我的生產文件的合理解決方案。這比我爲了在同一主機上運行Perl應用程序而必須處理Perl發行版要簡單得多。
捆綁器代碼中的管理依賴的工具 - 即,所有它需要的寶石。它將確保您在Gemfile中指定的所有寶石以及任何依賴項都安裝在您的系統上。它並不關心你使用的是哪個版本的ruby,它只是在使用哪個解釋器的情況下爲你安裝寶石。
RVM是運行多個紅寶石的工具,從理論上講,多gemsets爲好。它根本不處理依賴關係 - 安裝這些gem仍然取決於你。
我的經驗(我是RVM的新手)是,除非你需要運行多個ruby,或者需要爲不同的項目安裝gem,否則它們之間會產生衝突,所以你不想打擾RVM 。即使你使用的是RVM,使用Bundler來管理gem依賴也是有意義的,這樣你的Gemfile可以在你使用的任何代碼庫中進行跟蹤。
即使您只運行一個版本的ruby,RVM也可以非常方便地檢查您要推向世界的代碼的依賴關係。開發依賴於寶石將是一個很好的例子,從發佈之前的測試中受益。 – 2011-04-29 11:24:04
是的,這是一個很好的觀點,我會牢記這一點。 – muffinista 2011-04-29 15:38:47
RVM更像是一個收容單元。雖然Bundler就像應用程序在生命週期中需要或使用的清單(依賴管理器)(除其他外)。
如果你在Rails的工作,你將無法逃脫捆紮機。但是我一直都在使用它,所以我知道我需要什麼寶石,其他人以後也會參與這個項目。
RVM幫助我單獨拿出我的紅寶石,然後再進入紅寶石/項目。這樣我就沒有一堆寶石和不同的版本。
不完全是最動態的答案,但希望它有一點幫助。
直接回答你的問題......
是什麼捆紮機做RVM不 不是?
Bunlder將安裝項目所需的所有寶石(使用捆綁器,並在Gemfile中指定所有需要的寶石)。 RVM不會這樣做。
使用Gemfile中,你可以指定哪些寶石組(即:開發,測試)...
還有像這些是捆綁做,但RVM沒有很多「小」事。一般來說,正如上面的好人所解釋的那樣,RVM與bundler有着不同的目標。有關管理ruby運行時的RVM,而bundler則是關於管理應用程序的相關gem。
- 1. 什麼導致這個RVM/bundler差異?
- 2. 爲什麼RVM/Bundler集成會破壞RVM與終端的加載?
- 3. 爲什麼rvm install 2.0.0要求提供sudo密碼?
- 4. 使用Bundler,RVM和RubyGems
- 5. RVM/Bundler/Capistrano的Python替換
- 6. Rubygems,Bundler和RVM混淆
- 7. error安裝linecache19 gem bundler rvm
- 8. Silverlight提供什麼?
- 9. ModeShape提供的JackRabbit不提供什麼?
- 10. RVM PKG安裝ree_dependencies提供有關autoreconf
- 11. 使用RVM和Bundler引用本地gem?
- 12. RVM,Ruby 1.9.2,Rails 3,Passenger 3.0.2(Bundler :: GemNotFound)
- 13. RVM Gemset - 生產中的Bundler&Capistrano
- 14. [[-s「$ HOME/.rvm/scripts/rvm」]] &&。 「$ HOME/.rvm/scripts/rvm」:它有什麼作用?
- 15. BizSpark目前提供什麼?
- 16. 什麼是提供IOS
- 17. 什麼平臺提供SystemRandom?
- 18. 爲什麼bundler正在填充./libv8沒有進入rvm文件夾
- 19. 當我使用Bundler時,爲什麼我應該關心RVM的Gemset功能?
- 20. 爲什麼Ruby bundler(w/whiskey_disk和RVM)抱怨安裝的Gem不是> = 0?
- 21. 爲什麼bundler這樣做?
- 22. 爲什麼Bundler是vendoring ruby?
- 23. 爲什麼RVM需要YAML?
- 24. Sqoop 2提供的Sqoop 1沒有提供什麼?
- 25. OpenID提供商 - 什麼阻止惡意提供商?
- 26. 爲什麼$只提供'angular.mock.module'函數,$ q只提供'angular.mock.inject'函數?
- 27. OpenID提供者和OpenID WebRing SSO提供者有什麼區別?
- 28. dfs.replication提供了複製因素,file.replication提供了什麼
- 29. Bundler:爲什麼它要求「bundler/setup」讀取gemspec?
- 30. ActionMailer提供的命令返回什麼?
+1,沒錯,你無法在沒有捆綁器的情況下啓動你的Rails應用程序,所以我不確定你最近沒有它。作爲參考,您可以爲每個ruby虛擬機添加捆綁器到您的全局gemset,然後每個虛擬機只安裝一次。 – 2011-04-29 01:31:30
如果你更深入地解釋Bundler的功能,以及如何補充或與RVM的gemsets作戰,這將對我有所幫助。 – Phrogz 2011-04-29 01:50:24
@Phrogz,[基本原理](http://gembundler.com/rationale.html)頁面是一個很好的概述。我認爲它對於生產代碼非常方便,特別是當它需要在多臺機器上時。與傳統上我不必管理所有寶石相比,Gemfile和bundler會一直這樣做,只是它適用於Rails應用程序。我不在工作中使用Rails,但是生成實用程序腳本,所以這會很好地工作。 – 2011-04-29 07:14:08