Skip to content

Commit

Permalink
Bugfix: 'rvm gems use X' now properly sets up all env vars.
Browse files Browse the repository at this point in the history
  • Loading branch information
wayneeseguin committed Mar 3, 2010
1 parent 4997ef3 commit f94070f
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 17 deletions.
38 changes: 29 additions & 9 deletions scripts/cli
Original file line number Diff line number Diff line change
Expand Up @@ -50,35 +50,43 @@ __rvm_parse_args() {

gemset)
rvm_action=$rvm_token

export rvm_ruby_gem_home="$GEM_HOME"

if [[ "clear" = "$1" ]] ; then
unset rvm_gemset_name ; shift
rvm_ruby_gem_home="$(echo $GEM_HOME | sed 's/%.*$//')"
GEM_HOME="$rvm_ruby_gem_home"
BUNDLE_PATH="$rvm_ruby_gem_home"
GEM_PATH="$rvm_ruby_gem_home/bin:$rvm_ruby_gem_home%global/bin"
export rvm_ruby_gem_home GEM_HOME BUNDLE_PATH GEM_PATH
rvm_ruby_args="clear"
rvm_parse_break=1
elif [[ "use" = "$1" ]] ; then
rvm_use_flag=1
rvm_ruby_args="$@" ; shift
export rvm_use_flag rvm_ruby_args
rvm_gemset_name="$1"; shift
if [[ -z "$(echo $rvm_gemset_name | grep '%')" ]] ; then
if [[ ! -z "$(echo $rvm_gemset_name | grep '%')" ]] ; then
rvm_ruby_string=$(echo $rvm_gemset_name | sed 's/\(.*\)%.*/\1/')
rvm_gemset_name=$(echo $rvm_gemset_name | sed 's/.*%\(.*\)/\1/')
if [[ "$rvm_ruby_string" != "$rvm_gemset_name" ]] ; then export rvm_ruby_string ; else unset rvm_ruby_string ; fi
if [[ "$rvm_ruby_string" != "$rvm_gemset_name" ]] ; then
export rvm_ruby_string="$rvm_ruby_string%$rvm_gemset_name"
else
unset rvm_ruby_string
fi
export rvm_ruby_gem_home="$rvm_ruby_gem_home%$rvm_gemset_name"
fi
if [[ ! -z "$rvm_gemset_name" ]] ; then export rvm_gemset_name ; fi
elif [[ "delete" = "$1" ]] ; then
rvm_delete_flag=1
rvm_ruby_args="$@" ; shift
export rvm_delete_flag rvm_ruby_args
rvm_gemset_name="$1"; shift
if [[ -z "$(echo $rvm_gemset_name | grep '%')" ]] ; then
if [[ ! -z "$(echo $rvm_gemset_name | grep '%')" ]] ; then
rvm_ruby_string=$(echo $rvm_gemset_name | sed 's/\(.*\)%.*/\1/')
rvm_gemset_name=$(echo $rvm_gemset_name | sed 's/.*%\(.*\)/\1/')
if [[ "$rvm_ruby_string" != "$rvm_gemset_name" ]] ; then export rvm_ruby_string ; else unset rvm_ruby_string ; fi
if [[ "$rvm_ruby_string" != "$rvm_gemset_name" ]] ; then
export rvm_ruby_string="$rvm_ruby_string%$rvm_gemset_name"
__rvm_select
else
unset rvm_ruby_string
fi
fi
if [[ ! -z "$rvm_gemset_name" ]] ; then export rvm_gemset_name ; fi
else
Expand Down Expand Up @@ -432,6 +440,18 @@ rvm() {
fi
else
$rvm_scripts_path/gemsets $rvm_ruby_args

# Clear the gemset.
if [[ "$rvm_delete_flag" -eq 1 ]] ; then
gem_prefix="$(echo $GEM_HOME | sed 's/%.*$//')"
if [[ "$GEM_HOME" = "$gem_prefix%$rvm_gemset_name" ]] ; then
rvm_ruby_gem_home="$gem_prefix"
GEM_HOME="$rvm_ruby_gem_home"
BUNDLE_PATH="$rvm_ruby_gem_home"
GEM_PATH="$rvm_ruby_gem_home/bin:$rvm_ruby_gem_home%global/bin"
export rvm_ruby_gem_home GEM_HOME BUNDLE_PATH GEM_PATH
fi ; unset gem_prefix
fi
fi
result=$?
;;
Expand Down
15 changes: 7 additions & 8 deletions scripts/utility
Original file line number Diff line number Diff line change
Expand Up @@ -657,7 +657,7 @@ __rvm_gemset_select() {
fi

# If the gemset does not exist, then notify the user as such and abort the action.
if [[ ! -d "$rvm_ruby_gem_home" ]] && [[ ! -z "$rvm_gemset_name" ]] && [[ "$rvm_gemset_create_on_use_flag" -ne 1 ]] && [[ "$rvm_create_flag" -ne 1 ]]; then
if [[ ! -z "$rvm_gemset_name" ]] && [[ ! -d "$rvm_ruby_gem_home%$rvm_gemset_name" ]] && [[ "$rvm_gemset_create_on_use_flag" -ne 1 ]] && [[ "$rvm_create_flag" -ne 1 ]]; then
$rvm_scripts_path/log "error" "Gemset '$rvm_gemset_name' does not exist, rvm gemset create '$rvm_gemset_name' first."
return 1
fi
Expand Down Expand Up @@ -704,8 +704,6 @@ __rvm_gemset_select() {

# Use a gemset specified by 'rvm_ruby_gem_home'
__rvm_gemset_use() {
if [[ -z "$rvm_ruby_selected_flag" ]] ; then __rvm_select ; fi

if [[ ! -z "$rvm_ruby_gem_home" ]] ; then
if [[ ! -d "$rvm_ruby_gem_home" ]] ; then
if [[ "$rvm_gemset_create_on_use_flag" -eq 1 ]] ; then
Expand All @@ -717,12 +715,13 @@ __rvm_gemset_use() {
fi

if [[ "$rvm_interactive" -eq 1 ]] || [[ "$rvm_verbose_flag" -eq 1 ]] ; then
$rvm_scripts_path/log "info" "gemset : ${rvm_gemset_name:-default}"
$rvm_scripts_path/log "info" "Now using gemset '${rvm_gemset_name:-default}'"
fi

export GEM_HOME="$rvm_ruby_gem_home"
export GEM_PATH="$rvm_ruby_gem_path"
export BUNDLE_PATH="$rvm_ruby_gem_home"
rvm_ruby_gem_home="$(echo $GEM_HOME | sed 's/%.*$//')%$rvm_gemset_name"
GEM_HOME="$rvm_ruby_gem_home"
BUNDLE_PATH="$rvm_ruby_gem_home"
GEM_PATH="$rvm_ruby_gem_home/bin:$(echo $GEM_HOME | sed 's/%.*$//')%global/bin"
export rvm_ruby_gem_home GEM_HOME BUNDLE_PATH GEM_PATH
fi
return 0
}
Expand Down

0 comments on commit f94070f

Please sign in to comment.