Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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?

like image 996
t6d Avatar asked Jan 14 '11 08:01

t6d


2 Answers

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.

like image 175
Jörg W Mittag Avatar answered Nov 09 '22 08:11

Jörg W Mittag


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.

like image 6
anshul Avatar answered Nov 09 '22 09:11

anshul