Ask A Question

Notifications

You’re not receiving notifications from this thread.

Having different rails and gems versions installed on dev environment ?

Lykos asked in Rails

Hi all,

I'd like some clarification from someone who's more expert than me, if possible.

I'm currently having RVM and Rails 4.2.6 installed on my development environment in which I have built a few projects. Now, for my new projects I'd like to use the latest rails version (currently v5). So I assume that if I type the gem install rails command will get me the latest rails verion and probably set it as default, so every time I want to create a new project with rails new mynewprojectname this project will have the latest version, right?

My question is will my gem list contain both rails versions then, or is it going to cause any conflicts or issues to my old porjects, maybe by overwriting the rails gem? So if I want to work back on any of my "old" projects which has the "old" version, won't affect of any changes, right?

As far as I understand its the bundler who picks the version of each gem through the gemfile (unless you don't specify the version number, which in this case picks the latest version), right? If thats the case, I assume same thing applies and for every other gem that I've installed and use for each project, right?

Reply

Yeah, it sounds like you understand it correctly. If you install a gem like Rails multiple times, you can have multiple versions of it on your system. It will always try to use the latest version if you say "rails new", but you can also specify the version to an older one if you want to generate an older Rails app.

The list of installed gems on your system will show everything. However the gems in your app's Gemfile will only be the ones you're using (for example, Rails 5 and it's dependencies).

Bundle takes care of the discrepancy to lock the version numbers down to the ones that each version of Rails or each app has defined. It can look through all the gems you have and say okay you have 3 versions of this, I want version X. It does that so you don't have to worry about it.

I have Rails 3.2, 4.2, and 5.0 installed on my computer and run apps on various versions regularly with no issues because Bundler takes care of everything. 👍

Reply

Thank you for your reply Chris!

Is this the most efficient or correct way of setting things then? Or is it better to use gemsets instead? Cause as far as I understand now all my gems are installed in a "global" scope. Also if that's the case (using gemsets) how can I create gemsets for my existing projects (old)?

Reply

Nah, no reason to use gemsets anymore because Bundler does everything they do, but in a better fashion. Because your Gemfile is included inside your repository, you always know which gems and which versions to use for each app. That pretty much removes any need for gemsets these days.

Reply
Join the discussion
Create an account Log in

Want to stay up-to-date with Ruby on Rails?

Join 86,946+ developers who get early access to new tutorials, screencasts, articles, and more.

    We care about the protection of your data. Read our Privacy Policy.