Since Windows doesn't support rvm (Ruby version Manager), how do we have
- Ruby 1.8.7, Rails 2.3.8
- Ruby 1.8.7, Rails 3.0.0
- Ruby 1.9.2, Rails 3.0.0
on the same PC? Virtual machines can be used but it is kind of troublesome.
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.
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
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 Rubt 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"
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
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
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
.