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.
- Supports bash and zsh.
- Small (~80 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 upon login or when changing directories.
- Does not require write-access to the Ruby directory in order to install gems.
wget -O chruby-0.2.5.tar.gz https://github.com/postmodern/chruby/archive/v0.2.5.tar.gz
tar -xzvf chruby-0.2.5.tar.gz
cd chruby-0.2.5/
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.2.5.tar.gz.asc
gpg --verify chruby-0.2.5.tar.gz.asc chruby-0.2.5.tar.gz
chruby also includes a setup.sh
script, which installs chruby and the latest
releases of MRI, 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
Once chruby has been installed, you may want to install additional Rubies: This can be done with the ruby-build utility or manually:
Add the following lines to your ~/.bashrc
or ~/.profile
file:
source /usr/local/share/chruby/chruby.sh
RUBIES=(/opt/rubies/*)
Add the following to /etc/profile.d/chruby.sh
:
source /usr/local/share/chruby/chruby.sh
RUBIES=(
/opt/rubies/ruby-1.9.3-p327
/opt/rubies/jruby-1.7.0
/opt/rubies/rubinius-2.0.0-rc1
)
If you are migrating from another Ruby manager, set RUBIES
accordingly:
If you wish to set a default Ruby, simply call chruby
in ~/.bashrc
or
~/.zshrc
:
chruby ruby-1.9
List available Rubies:
$ chruby
ruby-1.9.3-p327
jruby-1.7.0
rubinius-2.0.0-rc1
Select a Ruby:
$ chruby 1.9.3
$ chruby
* ruby-1.9.3-p327
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-p327/lib/ruby/gems/1.9.1/bin:/opt/rubies/ruby-1.9.3-p327/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 (2012-11-10 patchlevel 327) [x86_64-linux]
- INSTALLATION DIRECTORY: /home/hal/.gem/ruby/1.9.3
- RUBY EXECUTABLE: /opt/rubies/ruby-1.9.3-p327/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-p327/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
Switch to an arbitrary Ruby on the fly:
$ chruby_use /path/to/ruby
Select a Ruby within a cron job:
30 18 * * * bash -lc "chruby 1.9.3 && /path/to/script"
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.
- mpapis for reviewing the code.