Skip to content

rbenv for Windows - Manage your app's Ruby environment on Windows

License

Notifications You must be signed in to change notification settings

ccmywish/rbenv-for-windows

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

rbenv for Windows

Gitter Chat License

Manage multiple Rubies on Windows.


嗨, 你好

Hi, hello

If you're interested in how it works, read these sections for quick and enough information:

  1. Relation with rbenv and RubyInstaller2
  2. How does it work?
  3. FAQ for maintainers
  4. Environment Variables

Screenshot

screenshot


Install

Requirements:

  • Windows 7 SP1+ / Windows Server 2008+
  • PowerShell 5 (or later, include PowerShell Core) and .NET Framework 4.5 (or later)
  • PowerShell must be enabled for your user account e.g. Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

It's portable, be bold to try it now:

For common users

mkdir "C:\Ruby-on-Windows"
git -C "C:\Ruby-on-Windows" clone "https://github.com/ccmywish/rbenv-for-windows" rbenv

In your $profile, you should add theses:

# rbenv for Windows
$env:RBENV_ROOT = "C:\Ruby-on-Windows"

# Not easy to download on Github?
# Use a custom mirror!
# $env:RBENV_USE_MIRROR = "https://abc.com/abc-<version>"

& "$env:RBENV_ROOT\rbenv\bin\rbenv.ps1" init

For Chinese users

中国大陆用户请使用以下方式

mkdir "C:\Ruby-on-Windows"
git -C "C:\Ruby-on-Windows" clone "https://gitee.com/ccmywish/rbenv-for-windows" rbenv

在你的 $profile, 你需要添加这些内容:

# rbenv for Windows
$env:RBENV_ROOT = "C:\Ruby-on-Windows"

# 我为大陆用户预置了镜像, 请查看 share/mirrors.ps1
# 请注意,这个必须放在 'init' 之前
$env:RBENV_USE_MIRROR = "CN"  # For Chinese users

& "$env:RBENV_ROOT\rbenv\bin\rbenv.ps1" init

Usage

Note: You can omit many numbers when you specify a version!

Try use

  • rbenv global 3
  • rbenv local 2.
  • rbenv install 3.1
# List recent Ruby versions
rbenv install -l

# List all Ruby versions
rbenv install -a

# Hooray! So easy to try Ruby dev branch!
rbenv install head

# Install Ruby 3.1.2-1
rbenv install 3.1.2

rbenv install 3.0.0-1

# Install devkit

# No need to run it by yourself now,
# It will run automatically when first setup rbenv
rbenv install msys
# or
rbenv install msys2
# or
rbenv install devkit

# List all installed versions
rbenv versions

# Set global version
rbenv global 3.0.0-1
# Check global version
rbenv global

# Set local version
rbenv local 3.1.2-1

# Check versions
rbenv versions

# Set Ruby version in this shell
rbenv shell 3.0.0-1

# Show current version
rbenv version

# Unset Ruby version in this shell
rbenv shell --unset

rbenv uninstall 3.1.2

# Update rbenv itself!
rbenv update

Note:

From 3.1.0-1, we should download rubyinstaller-<version>.7z directly, no devkit. That's only about 15MB. Every Ruby shares one MSYS64.

However, before 3.1.0-1, we have to download rubyinstaller-devkit-<version>.7z, with devkit. That's about 130MB ... Every Ruby has their own MSYS64.


Known issues

The current implementation has these drawbacks and issues:

  1. Bad integration with Bundler, Bundle install will not trigger hooks to rehash.

    I don't know if these are bugs of Bundler on Windows, please help this project if you can. As a compromise, I only have to rbenv rehash version xxx after you rbenv global xxx.

  2. We only support CRuby, x64 versions, provided by RubyInstaller2

    Sorry for that I have no plan to add x86 versions and other Ruby implementations like mruby, JRuby, TruffleRuby and so on. If you want to support it, consider to be a maintainer please! Thank you!

  3. We don't support old versions that have a little different leading URL

    Very small URL changes will make our work double, I don't have time for it. So keep URLs convention stable is very important. Luckily, these exceptions are very old Ruby versions (part of 2.4, 2.5 series) built by RubyInstaller, don't worry! See share/README.md for details.


Environment Variables

rbenv user defined

name example description
$env:RBENV_ROOT e.g.: C:\Ruby-on-Windows Defines the directory under which MSYS2, Ruby versions, shims and rbenv itself reside.
$env:RBENV_USE_MIRROR e.g.: "CN" Defines the mirror site for download links.

rbenv auto defined

name init value description
$env:RBENV_INIT 1 To avoid double init. This variable is set automatically when your terminal start, not set yourself!
$env:RUBYLIB $env:RBENV_ROOT\rbenv\share For RubyGems plugin to work. This variable is set automatically when your terminal start, not set yourself!
$env:RBENV_SYSTEM_RUBY No this if you don't have a Ruby installed by RubyInstaller GUI This variable is set automatically when your terminal start, not set yourself!

rbenv commands defined

name example description
$env:RBENV_VERSION 3.2.0 Specifies the Ruby version to be used in a shell.
This variable is set by command rbenv shell, not manually!

Thanks

  1. I reuse a lot of code pieces from scoop
  2. The RubyInstaller2 builds Ruby on Windows day and night
  3. The rbenv is our role model