From 6402e8b59943544dd685dd2162c55b4f39b87a51 Mon Sep 17 00:00:00 2001 From: Dylan Markow Date: Mon, 30 Jan 2012 14:53:26 -0800 Subject: [PATCH 1/4] rbenv plugin now properly finds homebrew-installed rbenv (fixes #878) --- plugins/rbenv/rbenv.plugin.zsh | 68 +++++++++++++++++++--------------- 1 file changed, 38 insertions(+), 30 deletions(-) diff --git a/plugins/rbenv/rbenv.plugin.zsh b/plugins/rbenv/rbenv.plugin.zsh index ae37404cd..6b842cd26 100644 --- a/plugins/rbenv/rbenv.plugin.zsh +++ b/plugins/rbenv/rbenv.plugin.zsh @@ -4,40 +4,48 @@ for rbenvdir in "$HOME/.rbenv" "/usr/local/rbenv" "/opt/rbenv" ; do FOUND_RBENV=1 export RBENV_ROOT=$rbenvdir export PATH=${rbenvdir}/bin:$PATH - eval "$(rbenv init -)" - - alias rubies="rbenv versions" - alias gemsets="rbenv gemset list" - - function current_ruby() { - echo "$(rbenv version-name)" - } - - function current_gemset() { - echo "$(rbenv gemset active 2&>/dev/null | sed -e ":a" -e '$ s/\n/+/gp;N;b a' | head -n1)" - } - - function gems { - local rbenv_path=$(rbenv prefix) - gem list $@ | sed \ - -Ee "s/\([0-9\.]+( .+)?\)/$fg[blue]&$reset_color/g" \ - -Ee "s|$(echo $rbenv_path)|$fg[magenta]\$rbenv_path$reset_color|g" \ - -Ee "s/$current_ruby@global/$fg[yellow]&$reset_color/g" \ - -Ee "s/$current_ruby$current_gemset$/$fg[green]&$reset_color/g" - } - - function rbenv_prompt_info() { - if [[ -n $(current_gemset) ]] ; then - echo "$(current_ruby)@$(current_gemset)" - else - echo "$(current_ruby)" - fi - } fi done unset rbenvdir -if [ $FOUND_RBENV -eq 0 ] ; then +# Check for homebrew rbenv (installed directly in /usr/local/bin) +if [ -f /usr/local/bin/rbenv -a $FOUND_RBENV -eq 0 ] ; then + FOUND_RBENV=1 +fi + +if [ $FOUND_RBENV -eq 1 ] ; then + + eval "$(rbenv init -)" + + alias rubies="rbenv versions" + alias gemsets="rbenv gemset list" + + function current_ruby() { + echo "$(rbenv version-name)" + } + + function current_gemset() { + echo "$(rbenv gemset active 2&>/dev/null | sed -e ":a" -e '$ s/\n/+/gp;N;b a' | head -n1)" + } + + function gems { + local rbenv_path=$(rbenv prefix) + gem list $@ | sed \ + -Ee "s/\([0-9\.]+( .+)?\)/$fg[blue]&$reset_color/g" \ + -Ee "s|$(echo $rbenv_path)|$fg[magenta]\$rbenv_path$reset_color|g" \ + -Ee "s/$current_ruby@global/$fg[yellow]&$reset_color/g" \ + -Ee "s/$current_ruby$current_gemset$/$fg[green]&$reset_color/g" + } + + function rbenv_prompt_info() { + if [[ -n $(current_gemset) ]] ; then + echo "$(current_ruby)@$(current_gemset)" + else + echo "$(current_ruby)" + fi + } + +else alias rubies='ruby -v' function gemsets() { echo 'not supported' } function rbenv_prompt_info() { echo "system: $(ruby -v | cut -f-2 -d ' ')" } From c0af189b3c1b7b78cccf8e314f708a1ace6d6544 Mon Sep 17 00:00:00 2001 From: Dylan Markow Date: Fri, 3 Feb 2012 18:44:40 -0800 Subject: [PATCH 2/4] Search additional locations for rbenv executable if first check fails. --- plugins/rbenv/rbenv.plugin.zsh | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/plugins/rbenv/rbenv.plugin.zsh b/plugins/rbenv/rbenv.plugin.zsh index 6b842cd26..bfe46d825 100644 --- a/plugins/rbenv/rbenv.plugin.zsh +++ b/plugins/rbenv/rbenv.plugin.zsh @@ -8,9 +8,15 @@ for rbenvdir in "$HOME/.rbenv" "/usr/local/rbenv" "/opt/rbenv" ; do done unset rbenvdir -# Check for homebrew rbenv (installed directly in /usr/local/bin) -if [ -f /usr/local/bin/rbenv -a $FOUND_RBENV -eq 0 ] ; then - FOUND_RBENV=1 +# If not found above, check the rest of $PATH for an rbenv executable (usually installed +# in /usr/local/bin, but may be installed elsewhere) +if [ $FOUND_RBENV -eq 0 ] ; then + for rbbindir in ${path} ; do + if [ -x $rbbindir/rbenv ] ; then + FOUND_RBENV=1 + break + fi + done fi if [ $FOUND_RBENV -eq 1 ] ; then From 738ce0cabaf77d5205156d303085747e391aacd5 Mon Sep 17 00:00:00 2001 From: Dylan Markow Date: Fri, 3 Feb 2012 18:47:21 -0800 Subject: [PATCH 3/4] Correct typo of rbbindir to bin --- plugins/rbenv/rbenv.plugin.zsh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/rbenv/rbenv.plugin.zsh b/plugins/rbenv/rbenv.plugin.zsh index bfe46d825..57c5dde39 100644 --- a/plugins/rbenv/rbenv.plugin.zsh +++ b/plugins/rbenv/rbenv.plugin.zsh @@ -11,8 +11,8 @@ unset rbenvdir # If not found above, check the rest of $PATH for an rbenv executable (usually installed # in /usr/local/bin, but may be installed elsewhere) if [ $FOUND_RBENV -eq 0 ] ; then - for rbbindir in ${path} ; do - if [ -x $rbbindir/rbenv ] ; then + for dir in ${path} ; do + if [ -x $dir/rbenv ] ; then FOUND_RBENV=1 break fi From bf529e7d63733c4fcaaedc70ab3cdd51c7288766 Mon Sep 17 00:00:00 2001 From: Dylan Markow Date: Thu, 9 Feb 2012 15:33:32 -0800 Subject: [PATCH 4/4] Simplify alternate search for rbenv executable. Rather than iterating over the entire $PATH, just try `which rbenv` similar to the Bundler plugin. --- plugins/rbenv/rbenv.plugin.zsh | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/plugins/rbenv/rbenv.plugin.zsh b/plugins/rbenv/rbenv.plugin.zsh index 57c5dde39..3d2834c20 100644 --- a/plugins/rbenv/rbenv.plugin.zsh +++ b/plugins/rbenv/rbenv.plugin.zsh @@ -8,15 +8,12 @@ for rbenvdir in "$HOME/.rbenv" "/usr/local/rbenv" "/opt/rbenv" ; do done unset rbenvdir -# If not found above, check the rest of $PATH for an rbenv executable (usually installed -# in /usr/local/bin, but may be installed elsewhere) +# If not found above, check for the existence of the rbenv executable anyway. if [ $FOUND_RBENV -eq 0 ] ; then - for dir in ${path} ; do - if [ -x $dir/rbenv ] ; then - FOUND_RBENV=1 - break - fi - done + if ( which rbenv > /dev/null 2>&1 ) ; then + FOUND_RBENV=1 + export RBENV_ROOT=$(rbenv root) + fi fi if [ $FOUND_RBENV -eq 1 ] ; then