nonopolarity
nonopolarity

Reputation: 150996

How to have multiple versions of Ruby AND Rails, and their combinations on Windows?

Since Windows doesn't support rvm (Ruby version Manager), how do we have

on the same PC? Virtual machines can be used but it is kind of troublesome.

Upvotes: 37

Views: 29824

Answers (4)

Harish Shetty
Harish Shetty

Reputation: 64363

Use uru. It is a multi-platform ruby environment manager. You can download the Windows version here: https://bitbucket.org/jonforums/uru/wiki/Downloads

Install the tool

Assuming C:\tools is on PATH and uru_rt.exe was extracted to C:\tools

C:\tools>uru_rt admin install

This adds uru.bat file to the tools directory.

Register ruby

uru admin add C:\ruby200\bin

List available rubies

uru ls
174         : jruby 1.7.4 (1.9.3p392) 2013-05-16 2390d3b on Java HotSpot(TM)
200p255     : ruby 2.0.0p255 (2013-07-07 revision 41812) [i686-linux]
=> system   : ruby 2.1.0dev (2013-07-06 trunk 41808) [i686-linux]

Switch ruby version

uru 174
---> Now using jruby 1.7.4 tagged as `174`

More commands can be found here: https://bitbucket.org/jonforums/uru/wiki/Examples


Old answer

I use Pik to manage multiple versions of ruby on a Windows machine.

Install the pik gem

> gem install pik
Successfully installed pik-0.2.6
1 gem installed

Install pik to a location that’s in your path, but someplace other than your ruby\bin dir.

>echo %path%
PATH=c:\pik;c:\ruby\Ruby187\bin;

>pik_install C:\pik
Thank you for using pik.

Installing to C:\pik
pik is installed

Install Ruby 1.9.2 using RubyInstaller and add the new Ruby version to pik registry.

>pik add C:\Ruby192\bin

List the available Ruby versions:

>pik list
187: ruby 1.8.7 (2010-01-10 patchlevel 249) [i386-mingw32] *
192: ruby 1.9.2p0 (2010-08-18) [i386-mingw32]

To switch to Ruby 1.9.2:

>pik 192
>pik list
187: ruby 1.8.7 (2010-01-10 patchlevel 249) [i386-mingw32]
192: ruby 1.9.2p0 (2010-08-18) [i386-mingw32] *

To switch between different versions of Rails:

In Rails 2.x, set the RAILS_GEM_VERSION in config/environment.rb file:

RAILS_GEM_VERSION = '= 2.3.8' unless defined? RAILS_GEM_VERSION

In rails 3, use the Gemfile to specify the Rails version:

gem "rails", "3.0.0"

Upvotes: 68

Rajkaran Mishra
Rajkaran Mishra

Reputation: 4942

After installing and registering all your ruby installations with uru, you'll need to install DevKit for each of the ruby versions installed. For installation follow these instructions.

I generally store the DevKit next to the version of Ruby to which it belongs, for example, C:\Ruby\Ruby193\DevKit where Ruby193 is the folder containing the 193 version of Ruby that I registered with uru.

Upvotes: 0

space2earth
space2earth

Reputation: 11

From what I could tell, uru only manages versions of RUBY.

For versions of RAILS, where you've already 2 or more versions on your local maching, to open a project in one's development environment, using an older version of rails, you enter the following in the command window:

rails _3.2.11_ s

where 3.2.11 represents the version of RAILS you want it to use, which you want to be the same version as listed in your project's file:

Gemfile.lock

Upvotes: 1

Steffen Roller
Steffen Roller

Reputation: 3494

I wrote myself a little batch file which creates a junction (aka symlinks) on the NTFS. The idea is to keep the PATH untouched. The path always contains c:\devkit\bin;c:\ruby\bin;.... The following Batch file changes the links to the actual directories.

@echo off
echo 1 - Ruby 1.9.3
echo 2 - Ruby 2.0.0 (32 bit)
echo 3 - Ruby 2.0.0 (64 bit)
choice /C 123 /M "Which Ruby? "

if errorlevel 255 goto confused
if errorlevel 3 goto 3
if errorlevel 2 goto 2
if errorlevel 1 goto 1
if errorlevel 0 goto 0
goto confused

:1
if exist c:\ruby rmdir c:\ruby
if exist c:\devkit rmdir c:\devkit
mklink /j c:\ruby c:\ruby193
mklink /j c:\devkit c:\devkit-4.5.2
goto end

:2
if exist c:\ruby rmdir c:\ruby
if exist c:\devkit rmdir c:\devkit
mklink /j c:\ruby c:\ruby2-x86
mklink /j c:\devkit c:\devkit-x64
goto end

:3
if exist c:\ruby rmdir c:\ruby
if exist c:\devkit rmdir c:\devkit
mklink /j c:\ruby c:\ruby2-x64
mklink /j c:\devkit c:\devkit-x64
goto end

:confused
echo I'm confused ...

:end
ruby -v

Upvotes: 5

Related Questions