From 6402e8b59943544dd685dd2162c55b4f39b87a51 Mon Sep 17 00:00:00 2001 From: Dylan Markow Date: Mon, 30 Jan 2012 14:53:26 -0800 Subject: [PATCH 1/5] 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/5] 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/5] 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/5] 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 From c4a5ac62c886d18f80deafa29b4797150f99115b Mon Sep 17 00:00:00 2001 From: Peter Jaros Date: Thu, 17 May 2012 15:07:50 -0400 Subject: [PATCH 5/5] Base rbenv plugin on the rbenv in the path. Rather than do our own searching, this gives the user full control of the PATH variable and of the search order for rbenv. It's also probably faster, since we let zsh do the searching for us. --- plugins/rbenv/rbenv.plugin.zsh | 20 +------------------- 1 file changed, 1 insertion(+), 19 deletions(-) diff --git a/plugins/rbenv/rbenv.plugin.zsh b/plugins/rbenv/rbenv.plugin.zsh index 3d2834c20..96d1e7ce7 100644 --- a/plugins/rbenv/rbenv.plugin.zsh +++ b/plugins/rbenv/rbenv.plugin.zsh @@ -1,22 +1,4 @@ -FOUND_RBENV=0 -for rbenvdir in "$HOME/.rbenv" "/usr/local/rbenv" "/opt/rbenv" ; do - if [ -d $rbenvdir/bin -a $FOUND_RBENV -eq 0 ] ; then - FOUND_RBENV=1 - export RBENV_ROOT=$rbenvdir - export PATH=${rbenvdir}/bin:$PATH - fi -done -unset rbenvdir - -# If not found above, check for the existence of the rbenv executable anyway. -if [ $FOUND_RBENV -eq 0 ] ; then - if ( which rbenv > /dev/null 2>&1 ) ; then - FOUND_RBENV=1 - export RBENV_ROOT=$(rbenv root) - fi -fi - -if [ $FOUND_RBENV -eq 1 ] ; then +if [[ $+commands[rbenv] -eq 1 ]] ; then eval "$(rbenv init -)"