我在linux上使用rvm gemsets来处理使用旧版rails和ruby的rails应用程序。一切都有意义,除了rubygems没有看到红宝石或宝石的正确路径。为了说明,我想使用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 ...
所以rubygems认识到我正在使用rvm,但认为我使用的是不同的ruby和默认的gemset。这就像rubygems完全忽略了相关的环境变量。
有关可能原因的任何建议吗?
编辑:
根据要求提供的其他信息
➜ 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。