Merge pull request #302 from sstephenson/ruby-version

Support for .ruby-version files
This commit is contained in:
Sam Stephenson 2013-01-03 07:32:02 -08:00
commit 80750f730f
5 changed files with 40 additions and 14 deletions

View file

@ -230,7 +230,7 @@ first argument. The most common subcommands are:
Sets the global version of Ruby to be used in all shells by writing
the version name to the `~/.rbenv/version` file. This version can be
overridden by a per-project `.rbenv-version` file, or by setting the
overridden by a per-project `.ruby-version` file, or by setting the
`RBENV_VERSION` environment variable.
$ rbenv global 1.9.3-p327
@ -244,7 +244,7 @@ currently configured global version.
### rbenv local ###
Sets a local per-project Ruby version by writing the version name to
an `.rbenv-version` file in the current directory. This version
a `.ruby-version` file in the current directory. This version
overrides the global, and can be overridden itself by setting the
`RBENV_VERSION` environment variable or with the `rbenv shell`
command.
@ -256,6 +256,11 @@ configured local version. You can also unset the local version:
$ rbenv local --unset
Previous versions of rbenv stored local version specifications in a
file named `.rbenv-version`. For backwards compatibility, rbenv will
read a local version specified in an `.rbenv-version` file, but a
`.ruby-version` file in the same directory will take precedence.
### rbenv shell ###
Sets a shell-specific Ruby version by setting the `RBENV_VERSION`
@ -284,7 +289,7 @@ the currently active version.
$ rbenv versions
1.8.7-p352
1.9.2-p290
* 1.9.3-p327 (set by /Users/sam/.rbenv/global)
* 1.9.3-p327 (set by /Users/sam/.rbenv/version)
jruby-1.7.1
rbx-1.2.4
ree-1.8.7-2011.03
@ -295,7 +300,7 @@ Displays the currently active Ruby version, along with information on
how it was set.
$ rbenv version
1.8.7-p352 (set by /Volumes/37signals/basecamp/.rbenv-version)
1.8.7-p352 (set by /Volumes/37signals/basecamp/.ruby-version)
### rbenv rehash ###

View file

@ -6,14 +6,18 @@
# rbenv local --unset
#
# Sets the local directory-specific Ruby version by writing the version
# name to a file named `.rbenv-version'.
# name to a file named `.ruby-version'.
#
# When you run a Ruby command, rbenv will look for an `.rbenv-version'
# When you run a Ruby command, rbenv will look for a `.ruby-version'
# file in the current directory and each parent directory. If no such
# file is found in the tree, rbenv will use the global Ruby version
# specified with `rbenv global', or the version specified in the
# RBENV_VERSION environment variable.
#
# For backwards compatibility, rbenv will also read version
# specifications from `.rbenv-version' files, but a `.ruby-version'
# file in the same directory takes precedence.
#
# <version> should be a string matching a Ruby version known to rbenv.
# The special version string `system' will use your default system Ruby.
# Run `rbenv versions' for a list of available Ruby versions.
@ -29,14 +33,20 @@ if [ "$1" = "--complete" ]; then
fi
RBENV_VERSION="$1"
RBENV_VERSION_FILE=".rbenv-version"
if [ "$RBENV_VERSION" = "--unset" ]; then
rm -f "$RBENV_VERSION_FILE"
rm -f .ruby-version .rbenv-version
elif [ -n "$RBENV_VERSION" ]; then
rbenv-version-file-write "$RBENV_VERSION_FILE" "$RBENV_VERSION"
if [ "$(RBENV_VERSION= rbenv-version-origin)" -ef .rbenv-version ]; then
rm -f .rbenv-version
{ echo "rbenv: removed existing \`.rbenv-version' file and migrated"
echo " local version specification to \`.ruby-version' file"
} >&2
fi
rbenv-version-file-write .ruby-version "$RBENV_VERSION"
else
rbenv-version-file-read "$RBENV_VERSION_FILE" ||
rbenv-version-file-read .ruby-version ||
rbenv-version-file-read .rbenv-version ||
{ echo "rbenv: no local version configured for this directory"
exit 1
} >&2

View file

@ -6,7 +6,10 @@ set -e
find_local_version_file() {
local root="$1"
while [ -n "$root" ]; do
if [ -e "${root}/.rbenv-version" ]; then
if [ -e "${root}/.ruby-version" ]; then
echo "${root}/.ruby-version"
exit
elif [ -e "${root}/.rbenv-version" ]; then
echo "${root}/.rbenv-version"
exit
fi

View file

@ -13,10 +13,18 @@ if [ -z "$RBENV_VERSION" ] || [ "$RBENV_VERSION" = "system" ]; then
exit
fi
RBENV_VERSION_PATH="${RBENV_ROOT}/versions/${RBENV_VERSION}"
version_exists() {
local version="$1"
[ -d "${RBENV_ROOT}/versions/${version}" ]
}
if [ -d "$RBENV_VERSION_PATH" ]; then
if version_exists "$RBENV_VERSION"; then
echo "$RBENV_VERSION"
elif version_exists "${RBENV_VERSION#ruby-}"; then
{ echo "warning: ignoring extraneous \`ruby-' prefix in version \`${RBENV_VERSION}'"
echo " (set by $(rbenv-version-origin))"
} >&2
echo "${RBENV_VERSION#ruby-}"
else
echo "rbenv: version \`$RBENV_VERSION' is not installed" >&2
exit 1

View file

@ -21,7 +21,7 @@ fi
print_version() {
if [ "$1" == "$current_version" ]; then
echo "${hit_prefix}$(rbenv-version)"
echo "${hit_prefix}$(rbenv-version 2>/dev/null)"
else
echo "${miss_prefix}$1"
fi