- Stop searching
RUBIES
if an exact match is found. (@havenwood)
- Fixed a bug where
/.ruby-version
was being ignored. (@havenwood)
- Ensure that all parameters are properly shell-escaped. (@havenwood)
- No longer install ruby-install.
- Print
RUBYLIB
,RUBYOPT
,RUBYPATH
andRUBYSHELL
env variables. - Include
chruby-exec
in the versions section. - Fall back to
-V
if--version
did not work.
- Remove trailing slashes from ruby directories when iterating over
RUBIES
. (@halostatue) - Ensure all temporary variables are local or unset.
- Ensure that
chruby_auto
can read.ruby-version
files that do not end with a new-line. (@hosiawak)
- Install ruby-install 0.3.3.
- Print
$HOME
,$RUBY_AUTO_VERSION
. - Print
trap -p
,$preexec_functions
and$precmd_functions
. - Print env variables even when they are empty.
- Multiple style changes and optimizations. (@zendeavor)
- Safely glob the contents of
/opt/rubies
and~/.rubies
. This prevents nullglob errors under zsh and.rbx
directories from being added toRUBIES
. - Unset
GEM_PATH
inchruby_reset
if it has become empty. Allows the RubyGems to use the defaultGEM_PATH
. - Safely quote
RUBIES[@]
to prevent implicit word-splitting when listingRUBIES
. - Map
-V
to--version
inchruby
. (@havenwood) - Added benchmarks.
- Unset
RUBY_AUTO_VERSION
when loaded. Forces sub-shells to re-detect any.ruby-version
file. (@KevinSjoberg) - No longer export
RUBY_AUTO_VERSION
. Allows new windows in tmux to detect the.ruby-version
file. - Set
RUBY_AUTO_VERSION
even if.ruby-version
contains an unknown Ruby. Preventschruby
from printing errors after every command. - Fixed a typo where
RUBY_VERSION_FILE
was still being used. (@KevinSjoberg)
- If stdin is a TTY, then spawn an interactive shell.
chruby_use
no longer echos the selected Ruby.
- Now runs under bash.
- Load
chruby.sh
forCHRUBY_VERSION
.
- Record and compare the contents of
.ruby-version
files in order to detect modifications, such as when switching between branches.
- Added a RPM spec.
- Respect
PREFIX
when auto-detecting/opt/rubies/*
. - Do not set
GEM_ROOT
if rubygems is not installed (Charlie Somerville). chruby_use
now echos the select ruby and the version, only if the shell is in interactive mode (Brian D. Burns).chruby_reset
no longer accidentally removes/bin
ifGEM_HOME
orGEM_ROOT
are empty (David Grayson).chruby
now selects the last lexical match for the given ruby.
-
Ensure that auto-switching works in non-interactive mode:
- zsh: use
preexec_functions
which runs in both interactive and non-interactive sessions. - bash: use
trap DEBUG
which runs before every command, in both interactive and non-interactive mode.PROMPT_COMMAND
only runs in interactive mode.
- zsh: use
-
Fixed a serious design flaw, where
chruby_auto
passed the contents of.ruby-version
as multiple arguments to thechruby
function. Originally, this allowed for.ruby-version
files to specify additionalRUBYOPT
options (ex:jruby --1.8
). However, an attacker could craft a malicious.ruby-version
file that would require arbitrary code (ex:1.9.3 -r./evil.rb
). The./evil.rb
file would then be required whenruby
is invoked bychruby_use
in order to determineRUBY_ENGINE
,RUBY_VERSION
,GEM_ROOT
.In order to prevent the abuse of this feature,
chruby_auto
now passes the entire contents of.ruby-version
as a first and only argument to thechruby
function.If you have
auto.sh
enabled, it is recommended that you upgrade. If you cannot upgrade, consider disablingauto.sh
. If you want to scan your entire system for malicious.ruby-version
files:find / -name .ruby-version 2>/dev/null | xargs -i{} grep -H " " {}
Thanks to David Grayson for reporting this flaw.
- Do not assume bash is installed at
/bin/bash
(Shannon Skipper).
- Prepend the new gem paths to
GEM_PATH
inchruby_use
, instead of overriding the variable. This allows users to add common gem paths toGEM_PATH
in~/.bashrc
. - Only remove the gem paths used by the Ruby in
chruby_reset
.
- Detect when
PROMPT_COMMAND=" "
before checking ifPROMPT_COMMAND
is an empty String. This appears to only happen on OSX Mountain Lion.
- Include
CHRUBY_VERSION
in the output.
- Added
-v
--version
options tochruby
andchruby-exec
. - Added
scripts/bug_report.sh
for collecting environment information for bug reports. - Initialize
RUBIES
to()
to avoid double-loadingchruby.sh
. - Invoke
ruby
using the absolute path to avoid shell aliases. This fixes a bug caused by ohmyzsh aliases.
- Unset
RUBY_VERSION_FILE
on initial load for tmux. - Remove trailing
;
and whitespace fromPROMPT_COMMAND
before appending; chruby_auto
.
- Bump MRI version to 1.9.3-p385.
- Use
\x1b
instead of\e
for OSX.
- Prevent
auto.sh
from being loaded more than once. - Recommend using
~/.bash_profile
and~/.zprofile
. - Use
cp
andmkdir
instead ofinstall
in theMakefile
.
- Run under bash, to avoid the dash shell.
- Invoke
$SHELL
with the-i
option, so zsh will load shell configuration.
- Install JRuby 1.7.2.
- Use special
./configure
options for homebrew. - Also install openssl and readline via homebrew.
- Fixed the auto-detection of
~/.rubies/*
. - Check if
bin/ruby
exists and is executable before switching to a Ruby. - Prevent
export=""
from accidentally being set under zsh. - Prevent
script/setup.sh
from exiting if abrew install
fails because all packages are already installed. - Updated the example
/etc/profile.d/chruby.sh
to only load under bash and zsh.
- Added the
chruby-exec
utility for use incrontab
or with Continuous Integration (CI). - Added support for auto-detecting Rubies installed into
/opt/rubies/
or~/.rubies/
. - Added
share/chruby/auto.sh
, which provides support for auto-switching to Rubies specified in the .ruby-version file. - Removed the "short circuit" check in
chruby_use
, to allow forcibly switching to the current Ruby, in casePATH
orGEM_PATH
become corrupted.
- Forcibly switch to system Ruby when loading
share/chruby/chruby.sh
. This fixes switching issues for tmux users.
- Renamed the
RUBY
environment variable toRUBY_ROOT
to avoid breaking theFileUtils#ruby
method in rake. - Do not unset
GEM_HOME
,GEM_PATH
,GEM_ROOT
if running under root.
- Added a
Vagrantfile
for testing chruby in various environments. - Changed all code and examples to reference
/opt/rubies/
. - Ensure all error messages are printed to stderr.
- Refactored
scripts/setup.sh
to manually install all Rubies and install any dependencies via the System Package Manager. - PGP signatures are now stored in
pkg/
.
- Updated the
Makefile
to be compatible with BSD automake. - Do not override
PREFIX
. - Added a
test
task.
- Use
HOMEBREW_PREFIX
. - Use
sha1
instead ofmd5
(deprecated). - No longer dynamically generate the example configuration.
- Updated the
Makefile
to be compatible with the dash shell. - Use inline substring substitutions instead of
sed
.
- Use
typeset
to declareRUBIES
as an indexed Array. - Use the correct globbed Array syntax for both zsh and bash.
- Improved the post-installation message in the homebrew recipe to auto-detect RVM, rbenv and rbfu.
- Fixed
make install
to work on OS X. - Added a homebrew recipe.
- Install
chruby.sh
into$PREFIX/share/chruby/
.
- Check if
$RUBY
and$RUBYOPT
are different from the arguments passed tochruby_use
. - Fixed a spelling error in the README (thanks Ian Barnett).
- Added unit-tests using shunit2
- Improved sanitation of
$PATH
inchruby_reset
. (thanks mpapis) - If the desired Ruby is already in use, immediately return from
chruby_use
. - Export
$RUBY_ENGINE
,$RUBY_VERSION
,$GEM_ROOT
inchruby_use
.
- Added support for zsh.
- Renamed the
$RUBY_PATH
variable to$RUBY
. - Set the
$RUBY_ENGINE
variable. - Set the
$GEM_ROOT
variable toGem.default_dir
. This supports the custom RubyGems directory used by Rubinius. - Only initialize the
$RUBIES
variable if it does not have a value.
- Added a
LICENSE.txt
. - Added a
ChangeLog.md
. - Updated the
Makefile
to generate proper tar archives.
- Initial release.