ソースを参照

renv - corral your gems

Fletcher Nichol 11 年 前
コミット
ccb7ddc92f
1 ファイル変更50 行追加0 行削除
  1. 50 0
      renv.sh

+ 50 - 0
renv.sh

@@ -0,0 +1,50 @@
+function renv() {
+  case "$1" in
+  status|s)
+    [[ -n "$GEM_HOME" ]] && echo "GEM_HOME='$GEM_HOME'"
+    [[ -n "$GEM_PATH" ]] && echo "GEM_PATH='$GEM_PATH'"
+    echo "PATH='$PATH'"
+    return
+  ;;
+  reset|r)
+    if [[ -z "$RENV_ORIG_PATH" ]] ; then
+      echo ">>>> renv not set. Try: \`renv'"
+      return 3
+    fi
+
+    [[ -n "$RENV_ORIG_GEM_HOME" ]] && GEM_HOME=$RENV_ORIG_GEM_HOME || unset GEM_HOME
+    [[ -n "$RENV_ORIG_GEM_PATH" ]] && GEM_PATH=$RENV_ORIG_GEM_PATH || unset GEM_PATH
+    [[ -n "$RENV_ORIG_PATH" ]] && PATH=$RENV_ORIG_PATH
+    unset RENV_ORIG_GEM_HOME RENV_ORIG_GEM_PATH RENV_ORIG_PATH
+
+    echo "---> renv is reset, GEM_HOME is ${GEM_HOME:-<unset>}"
+  ;;
+  "")
+    if [[ -n "$RENV_ORIG_PATH" ]] ; then
+      echo ">>>> renv already set, GEM_HOME is $GEM_HOME. Try: \`renv reset'"
+      return 9
+    fi
+
+    eval $(ruby -rubygems - <<-'EOF'
+      puts "local ruby_engine=#{defined?(RUBY_ENGINE) ? RUBY_ENGINE : 'ruby'}"
+      puts "local ruby_version=#{RUBY_VERSION}"
+      puts "local gem_path='#{Gem.path.join(':')}'"
+EOF)
+    local gem_dir="$PWD/.gem/$ruby_engine/$ruby_version"
+
+    export RENV_ORIG_PATH="$PATH"
+    export RENV_ORIG_GEM_HOME="$GEM_HOME"
+    export RENV_ORIG_GEM_PATH="$GEM_PATH"
+
+    export PATH="$gem_dir/bin:$PATH"
+    export GEM_HOME="$gem_dir"
+    export GEM_PATH="$gem_dir:$gem_path"
+
+    echo "---> renv is set, GEM_HOME is $GEM_HOME"
+  ;;
+  help|h|usage|--help|-h|*)
+    echo "usage: renv [reset|status]"
+    return
+  ;;
+  esac
+}