0

我在 linux 上使用 rvm gemsets 来处理带有旧版本 rails 和 ruby​​ 的 rails 应用程序。除了 ruby​​gems 没有看到 ruby​​ 或 gem 的正确路径之外,一切都有意义。为了说明,我想使用 ruby​​ 1.8.7 和一个名为 smsx 的 gemset

➜  rails git:(master) ✗ rvm current
ruby-1.8.7-p371@smsx

正如预期的那样

➜  rails git:(master) ✗ echo $GEM_PATH
/home/matt/.rvm/gems/ruby-1.8.7-p371@smsx:/home/matt/.rvm/gems/ruby-1.8.7-p371@global

然而

➜  rails git:(master) ✗ gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 1.8.25
  - RUBY VERSION: 1.9.3 (2013-02-06 patchlevel 385) [i686-linux]
  - INSTALLATION DIRECTORY: /home/matt/.rvm/gems/ruby-1.9.3-p385
  ... more ...
  - GEM PATHS:
     - /home/matt/.rvm/gems/ruby-1.9.3-p385
     - /home/matt/.rvm/gems/ruby-1.9.3-p385@global
  ... more ...

所以 ruby​​gems 认识到我正在使用 rvm,但认为我正在使用不同的 ruby​​ 和默认 gemset。就像 ruby​​gems 完全忽略了相关的环境变量。

关于可能原因的任何建议?

编辑:

应要求提供的附加信息

➜  rails git:(master) ✗ echo $PATH
/home/matt/.rvm/gems/ruby-1.8.7-p371@smsx/bin:/home/matt/.rvm/gems/ruby-1.8.7-  p371@global/bin:/home/matt/.rvm/rubies/ruby-1.8.7-p371/bin:/home/matt/.rvm/bin:/home/matt/.rvm/gems/ruby-1.9.3-p385/bin:/home/matt/.rvm/gems/ruby-1.9.3-p385@global/bin:/home/matt/.rvm/rubies/ruby-1.9.3-p385/bin:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

➜  rails git:(master) ✗ which gem
gem () {
    typeset result
    (
        typeset rvmrc
    rvm_rvmrc_files=("/etc/rvmrc" "$HOME/.rvmrc") 
    if [[ -n "${rvm_prefix:-}" ]] && ! [[ "$HOME/.rvmrc" -ef "${rvm_prefix}/.rvmrc" ]]
    then
        rvm_rvmrc_files+=("${rvm_prefix}/.rvmrc") 
    fi
    for rvmrc in "${rvm_rvmrc_files[@]}"
    do
        [[ -s "${rvmrc}" ]] && source "${rvmrc}" || true
    done
    unset rvm_rvmrc_files
    command gem "$@"
) || result=$? 
hash -r
return ${result:-0}

}

我正在使用 oh-my-zsh。

4

0 回答 0