diff --git a/README.md b/README.md index c6e666b..12c3645 100644 --- a/README.md +++ b/README.md @@ -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 ### diff --git a/libexec/rbenv-local b/libexec/rbenv-local index a0b3fe7..9da4481 100755 --- a/libexec/rbenv-local +++ b/libexec/rbenv-local @@ -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. +# # 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 diff --git a/libexec/rbenv-version-file b/libexec/rbenv-version-file index 1beea0f..2413834 100755 --- a/libexec/rbenv-version-file +++ b/libexec/rbenv-version-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 diff --git a/libexec/rbenv-version-name b/libexec/rbenv-version-name index cd1d18f..3eef70a 100755 --- a/libexec/rbenv-version-name +++ b/libexec/rbenv-version-name @@ -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 diff --git a/libexec/rbenv-versions b/libexec/rbenv-versions index 5bfa72e..ea28e5c 100755 --- a/libexec/rbenv-versions +++ b/libexec/rbenv-versions @@ -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