如何在Windows上拥有多个版本的Ruby AND Rails及其组合?

由于Windows不支持rvm(Ruby版本管理器),我们如何拥有

  • Ruby 1.8.7,Rails 2.3.8
  • Ruby 1.8.7,Rails 3.0.0
  • Ruby 1.9.2,Rails 3.0.0

在同一台电脑上? 可以使用虚拟机,但它有点麻烦。

使用uru 。 它是一个多平台的ruby环境管理器。 您可以在此处下载Windows版本: https : //bitbucket.org/jonforums/uru/wiki/Downloads

安装该工具

假设C:\tools在PATH上, uru_rt.exe被解压缩到C:\tools

 C:\tools>uru_rt admin install 

这会将uru.bat文件添加到tools目录中。

注册ruby

 uru admin add C:\ruby200\bin 

列出可用的ruby

 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] 

切换ruby版本

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

可在此处找到更多命令: https : //bitbucket.org/jonforums/uru/wiki/Examples


老答案

我使用Pik在Windows机器上管理多个版本的ruby。

安装pik gem

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

将pik安装到路径中的位置,但是除了ruby \ bin目录之外的某个位置。

 >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 

使用RubyInstaller安装Rubt 1.9.2并将新的Ruby版本添加到pik注册表。

 >pik add C:\Ruby192\bin 

列出可用的Ruby版本:

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

要切换到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] * 

要在不同版本的Rails之间切换:

在Rails 2.x中,在config/environment.rb文件中设置RAILS_GEM_VERSION:

 RAILS_GEM_VERSION = '= 2.3.8' unless defined? RAILS_GEM_VERSION 

在rails 3中,使用Gemfile指定Rails版本:

 gem "rails", "3.0.0" 

我给自己写了一个小批处理文件,它在NTFS上创建了一个联结(也就是符号链接)。 我们的想法是保持PATH不受影响。 该路径始终包含c:\devkit\bin;c:\ruby\bin;... 以下批处理文件将更改指向实际目录的链接。

 @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 /jc:\ruby c:\ruby193 mklink /jc:\devkit c:\devkit-4.5.2 goto end :2 if exist c:\ruby rmdir c:\ruby if exist c:\devkit rmdir c:\devkit mklink /jc:\ruby c:\ruby2-x86 mklink /jc:\devkit c:\devkit-x64 goto end :3 if exist c:\ruby rmdir c:\ruby if exist c:\devkit rmdir c:\devkit mklink /jc:\ruby c:\ruby2-x64 mklink /jc:\devkit c:\devkit-x64 goto end :confused echo I'm confused ... :end ruby -v 

据我所知,uru只管理RUBY的版本。

对于RAILS的版本,在本地工具上已有2个或更多版本,要在一个开发环境中使用较旧版本的rails打开项目,请在命令窗口中输入以下内容:

rails _3.2.11_ s

其中3.2.11表示您希望它使用的RAILS版本,您希望它与项目文件中列出的版本相同:

Gemfile.lock的

在使用uru安装和注册所有ruby安装后 ,您需要为安装的每个ruby版本安装DevKit 。 安装时请遵循以下说明 。

我通常将DevKit存储在它所属的Ruby版本旁边,例如, C:\Ruby\Ruby193\DevKit其中Ruby193是包含我在uru注册的193版Ruby的文件夹。