Why should I care about RVM's Gemset feature when I use Bundler?
I just don't get it. I thought, Bundler was developed to resolve version conflicts between gems. So that I just have to require "bundler/setup"
and everything is fine, knowing that Bundler will load the correct versions of all my gems and their dependencies. Now, RVM is great for managing multiple Rubies, I know, but why should I care about the Gemset feature? Do I miss something here? Can it make my development even easier? Maybe, some of you can give me some hints on the perfect RVM + Bundler workflow for both, development and production.
I also don't know when RVM starts switching to another Ruby. I know that I can have an .rvmrc
file in my project, but do I have to cd
to this directory so that the switch happens?
Furthermore, I usually use Passenger for development since, thanks to the Passenger.prefpane
, integration in Mac OS is great. Can开发者_运维技巧 I still do that with RVM or is there a better way to do it? Does Passenger recognize .rvmrc
files and switch to the correct Gemset?
Why should I care about RVM's Gemset feature when I use Bundler?
You shouldn't.
Well, if you want to, you can care about, of course, so I should better say "You don't need to."
I just listened to a podcast interview with one of the Bundler core team members who basically said that since he started using Bundler he stopped using Gemsets, because they are redundant.
Here's a blog post that discusses the same issue, with some examples.
When I am dealing with legacy code or forking other non-rails ruby projects that haven't for whatever reasons gone the bundle route, gemsets are such an awesome thing to have. I also find gemsets invaluable while developing gems. Nice to have multiple test environments to switch between and test the freshly built gem.
Passenger doesn't read the .rvmrc
to the best of my knowledge. You can't run different projects in passenger under different rubies to the best of my knowledge. My default rails setup has just bundler
and rake
in the global gemset. I let bundler take over from there and manage rest of the gems project wise just like you describe. Works pretty well.
You should definitely use gemsets if you anticipate ever having to change your bundler version. And you can use gemsets to manage gems that don't matter specifically to your Rails app (wirble etc.).
精彩评论