【问题标题】:How to have multiple versions of Ruby AND Rails, and their combinations on Windows?如何在 Windows 上拥有多个版本的 Ruby 和 Rails,以及它们的组合?
【发布时间】:2010-09-06 02:40:27
【问题描述】:

由于 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

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

【问题讨论】:

    标签: ruby-on-rails ruby rvm


    【解决方案1】:

    使用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 文件添加到工具目录中。

    注册红宝石

    uru admin add C:\ruby200\bin
    

    列出可用的红宝石

    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 安装 Ruby 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"
    

    【讨论】:

    • 找到更新版本的 pik here。用于 2.0 和 2.0-x64 的不同开发套件使此解决方案不起作用。
    • 答案中pik的链接指向官方位置。
    • 2014 pik 已经过时了,现在没用了
    • @HarishShetty - Pik 不见了。您能否将 Uru 添加到您的答案中?
    • @sidsmith,pik 已在此 commit 中退休。直到今天我才看到公告。感谢您的通知,我很高兴有 pik 的替代品。
    【解决方案2】:

    我给自己写了一个小批处理文件,它在 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 /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
    

    【讨论】:

    • 我喜欢这个并为你加了一个。但是,“如果错误级别 255 转到 255”不应该是“如果错误级别 255 转到混淆”吗?
    【解决方案3】:

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

    对于 RAILS 版本,如果您在本地机器上已经有 2 个或更多版本,要使用旧版本的 Rails 在开发环境中打开项目,请在命令窗口中输入以下内容:

    导轨 _3.2.11_ s

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

    Gemfile.lock

    【讨论】:

      【解决方案4】:

      在使用uru 安装和注册所有 ruby​​ 安装后,您需要为每个已安装的 ruby​​ 版本安装DevKit。按照这些instructions进行安装。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-06
        • 2021-11-04
        • 1970-01-01
        • 2014-12-15
        相关资源
        最近更新 更多