Changes the current Ruby.
- Updates
$PATH
.- Also adds RubyGems
bin/
directories to$PATH
.
- Also adds RubyGems
- Correctly sets
$GEM_HOME
and$GEM_PATH
.- Users: gems are installed into
~/.gem/$ruby/$version
. - Root: gems are installed directly into
/path/to/$ruby/$gemdir
.
- Users: gems are installed into
- Additionally sets
$RUBY_ROOT
,$RUBY_ENGINE
,$RUBY_VERSION
and$GEM_ROOT
. - Optionally sets
$RUBYOPT
if second argument is given. - Calls
hash -r
to clear the command-lookup hash-table. - Fuzzy matching of Rubies by name.
- Defaults to the system Ruby.
- Optionally supports auto-switching and the
.ruby-version
file. - Supports bash and zsh.
- Small (~90 LOC).
- Has tests.
- Does not hook
cd
. - Does not install executable shims.
- Does not require Rubies be installed into your home directory.
- Does not automatically switch Rubies by default.
- Does not require write-access to the Ruby directory in order to install gems.
wget -O chruby-0.3.4.tar.gz https://github.com/postmodern/chruby/archive/v0.3.4.tar.gz
tar -xzvf chruby-0.3.4.tar.gz
cd chruby-0.3.4/
make install
All releases are PGP signed for security. Instructions on how to import my PGP key can be found on my blog. To verify that a release was not tampered with:
wget https://raw.github.com/postmodern/chruby/master/pkg/chruby-0.3.4.tar.gz.asc
gpg --verify chruby-0.3.4.tar.gz.asc chruby-0.3.4.tar.gz
chruby also includes a setup.sh
script, which installs chruby and the latest
releases of Ruby, JRuby and Rubinius. Simply run the script as root or
via sudo
:
sudo ./scripts/setup.sh
chruby can also be installed with homebrew:
brew install chruby
chruby is already included in the AUR:
yaourt -S chruby
Chruby provides detailed instructions for installing additional Rubies:
You can also use ruby-build to install additional Rubies:
Installing to /opt/rubies
:
ruby-build 1.9.3-p392 /opt/rubies/ruby-1.9.3-p392
ruby-build jruby-1.7.3 /opt/rubies/jruby-1.7.3
ruby-build rbx-2.0.0-rc1 /opt/rubies/rubinius-2.0.0-rc1
Add the following to the /etc/profile.d/chruby.sh
, ~/.bashrc
or
~/.zshenv
file:
source /usr/local/share/chruby/chruby.sh
By default chruby will search for Rubies installed into /opt/rubies/
or
~/.rubies/
. For non-standard installation locations, simply set the
RUBIES
variable:
RUBIES=(
/opt/jruby-1.7.0
$HOME/src/rubinius
)
If you are migrating from another Ruby manager, set RUBIES
accordingly:
If you wish to enable chruby system-wide, add the following to
/etc/profile.d/chruby.sh
:
[ -n "$BASH_VERSION" ] || [ -n "$ZSH_VERSION" ] || return
source /usr/local/share/chruby/chruby.sh
If you want chruby to auto-switch the current version of Ruby when you cd
between your different projects, simply load auto.sh
in ~/.bash_profile
or ~/.zshrc
:
source /usr/local/share/chruby/auto.sh
chruby will check the current and parent directories for a .ruby-version file. Other Ruby switchers also understand this file: https://gist.github.com/1912050
If you wish to set a default Ruby, simply call chruby
in ~/.bashrc
or
~/.zshrc
:
chruby ruby-1.9
If you have enabled auto-switching, simply create a .ruby-version
file:
echo "ruby-1.9" > ~/.ruby-version
For instructions on using chruby with other tools, please see the wiki:
List available Rubies:
$ chruby
ruby-1.9.3-p392
jruby-1.7.0
rubinius-2.0.0-rc1
Select a Ruby:
$ chruby 1.9.3
$ chruby
* ruby-1.9.3-p392
jruby-1.7.0
rubinius-2.0.0-rc1
$ echo $PATH
/home/hal/.gem/ruby/1.9.3/bin:/opt/rubies/ruby-1.9.3-p392/lib/ruby/gems/1.9.1/bin:/opt/rubies/ruby-1.9.3-p392/bin:/usr/lib64/qt-3.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/home/hal/bin:/home/hal/bin
$ gem env
RubyGems Environment:
- RUBYGEMS VERSION: 1.8.23
- RUBY VERSION: 1.9.3 (2013-02-22 patchlevel 392) [x86_64-linux]
- INSTALLATION DIRECTORY: /home/hal/.gem/ruby/1.9.3
- RUBY EXECUTABLE: /opt/rubies/ruby-1.9.3-p392/bin/ruby
- EXECUTABLE DIRECTORY: /home/hal/.gem/ruby/1.9.3/bin
- RUBYGEMS PLATFORMS:
- ruby
- x86_64-linux
- GEM PATHS:
- /home/hal/.gem/ruby/1.9.3
- /opt/rubies/ruby-1.9.3-p392/lib/ruby/gems/1.9.1
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :benchmark => false
- :backtrace => false
- :bulk_threshold => 1000
- "gem" => "--no-rdoc"
- REMOTE SOURCES:
- http://rubygems.org/
Switch to JRuby in 1.9 mode:
$ chruby jruby --1.9
$ ruby -v
jruby 1.7.0 (1.9.3p203) 2012-10-22 ff1ebbe on OpenJDK 64-Bit Server VM 1.7.0_09-icedtea-mockbuild_2012_10_17_15_53-b00 [linux-amd64]
Switch back to system Ruby:
$ chruby system
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/hal/bin
Run a command under a Ruby with chruby-exec
:
$ chruby-exec jruby -- gem update
Switch to an arbitrary Ruby on the fly:
$ chruby_use /path/to/ruby
* Deprecated in favor of chruby.
yeah
chruby
is nice, does the limited thing of switching really good, the only hope it never grows
-- Michal Papis of RVM
I just looooove chruby For the first time I'm in total control of all aspects of my Ruby installation.
Written by Postmodern, it's basically the simplest possible thing that can work.
I wrote ruby-version; however, chruby is already what ruby-version wanted to be. I've deprecated ruby-version in favor of chruby.