我根据github的说明安装了rbenv。我正在运行OSX,但我已经在Ubuntu 12.04虚拟机上尝试了这一点,并得到了相同的结果。下面是当我尝试更改ruby版本时,在我的终端中得到的结果:
rbenv versions
* 1.9.3-p0 (set by /Users/user/.rbenv/version)
1.9.3-p125
rbenv global
1.9.3-p0
rbenv rehash
ruby -v
ruby 1.8.7 (2011-12-28 patchlevel 357) [universal-darwin11.0]
which ruby
/usr/bin/ruby
有人知道为什么rbenv没有像它认为的那样切换ruby版本吗?此外,本地目录中没有.rbenv文件,这将导致ruby版本默认为1.8.7
rbenv local
rbenv: no local version configured for this directory
有很多误导性的答案是有效的。我认为值得一提的是rbenv README的步骤。
$ brew安装rbenv
$ rbenv init并按照它给出的指示执行。这是我得到的:
~ $ rbenv init
# Load rbenv automatically by appending
# the following to ~/.bash_profile:
eval "$(rbenv init -)"
我更新了~/.bash_profile…
关闭终端,重新打开
通过运行以下命令来验证它是否正常工作:
$ curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-doctor | bash
现在只需安装你想要的版本:rbenv install <version>
第一步是找出调用的是哪个ruby:
$ which ruby
你的系统会说:
/usr/bin/ruby
这不是rbenv使用的垫片,它(在MacOS上)应该看起来像:
/Users/<username>/.rbenv/shims/ruby
shim实际上是一个脚本,它的作用类似于重定向到您设置的ruby版本。
为了解决问题,我建议您取消特定于项目的“本地”版本,以及特定于shell的“shell”版本,并使用在~/纯文本文件中确定的“全局”版本设置进行测试。Rbenv /version,在你的例子中,它只是版本号“1.9.3”。
$ rbenv global 1.9.3
$ rbenv local --unset
$ rbenv shell --unset
你可以在你的项目文件夹(不是主文件夹)的根目录下执行ls -laG,以确保那里不再有“。ruby-version”文件。
您可以使用rbenv版本来确定rbenv将使用哪个版本(以及设置该版本的文件的位置和名称):
$ rbenv versions
在正确设置路径之前,这些都不重要。
用这个来确保你的MacOS会服从你:
$ rbenv init -
紧随其后的是:
$ which ruby
确保它看起来像:
/Users/<username>/.rbenv/shims/ruby
然后运行此命令将该行添加到配置文件中,以便在每次打开新终端窗口时运行:
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
还有其他方法可以修改路径,请随意替换其中任何一种,而不是运行rbenv init。
注意:重新安装Rails:
$ gem install rails
如果您试图在Rails上运行Ruby,那么您需要首先让这些都正常工作,然后再次安装Rails gem。以前安装的Rails会使用硬编码路径到错误的ruby,其他一些东西也会在错误的位置,所以只需重新安装gem。
附注:如果你的MacOS不服从你(*上面提到过),那么你可能必须找到另一种方法来修改你的路径,但这不太可能是一个问题,因为“mac只是工作”;)