Mavericks,RBENV,您的Ruby版本是2.0.0,但您的Gemfile指定为2.1.1

Kyl*_*son 9 ruby linux ruby-on-rails bundler osx-mavericks

我已阅读并尝试了建议的几个,其他的,问题,像我这样的(所有公认的答案),以及几个小时的谷歌搜索,但毫无效果.这让我觉得我的问题在我的计算机上有一块Ruby/RBENV生态系统是腐败的,或者可能是一个可怕的PATH问题.我总是sudo要安装任何宝石,这是我以前从未做过的,所以这也令人费解.

以下是我认为相关的文件和命令的一些输出.如果您需要更多信息,请告诉我们:

.zshrc

export PATH="/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin" if which rbenv > /dev/null;
then eval "$(rbenv init - zsh)"; fi
Run Code Online (Sandbox Code Playgroud)

红宝石-v

ruby 2.1.1p76 (2014-02-24 revision 45161) [x86_64-darwin13.0]
Run Code Online (Sandbox Code Playgroud)

rbenv本地

2.1.1
Run Code Online (Sandbox Code Playgroud)

Gemfile(我也曾多次吹灭我的g​​emfile.lock)

source 'https://rubygems.org'

ruby '2.1.1'

gem 'rails', '4.1.4'
... [omitted for brevity]
Run Code Online (Sandbox Code Playgroud)

.ruby版本

2.1.1
Run Code Online (Sandbox Code Playgroud)

echo $ PATH

/[user path]/.rbenv/shims:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
Run Code Online (Sandbox Code Playgroud)

如果有人对我接下来应该尝试什么有任何想法,我将不胜感激,而不是重新格式化我的电脑.

编辑1:尝试选项B根据Ben Kreeger从下面的git repos安装它们.type rbenv正确返回rbenv是一个shell函数,原始消息不断出现.我重新安装了Mavericks,我的设置仍然无法正常工作.

编辑2:每当我尝试安装gem时,我都会Gem::FilePermissionError说我无法访问Ruby 2.0.0文件夹(作为系统安装).要更多地使用RBENV ......

编辑3:更多调试(以下所有内容)

使用RBENV安装Ruby版本时发生错误并发现有些人提到readline问题.

尝试以下步骤来修复readline:https://github.com/sstephenson/ruby-build/issues/550#issuecomment-40681557,并得到一个错误,我的Xcode命令行工具安装不好.

然后xcode-select --install重新安装它们.

试了rbenv install 2.1.1一遍,并得到了The Ruby openssl extension was not compiled. Missing the OpenSSL lib?

根据https://coderwall.com/p/n9bnug,我将我的OpenSSL扩展与https://coderwall.com/p/n9bnug

重置Ruby的版本:rbenv local 2.1.1 rbenv global 2.1.1rbenv rehash

一切似乎表明bundler正在尝试使用我的systemRuby安装(2.0.0-p247)而不是RBENV指定的内容.感到困惑的是缺失的环节.

Kyl*_*son 59

哇,只是哇.

我所要做的就是gem install bundler然后rbenv rehash.一切正常.

原始的错误消息向我指出了RBENV或我的Ruby版本的问题,而实际上它只是落在旧版本的bundler上.

为什么我不会收到更标准的this needs bundler version [xxxx]...错误而不是告诉我我的Ruby版本指定不正确?

  • 我认为您的问题是您最初在系统Ruby下安装了Bundler,硬编码使用该版本,而不是将Bundler安装到由rbenv管理的Ruby版本中. (5认同)
  • 谢谢你,这终于为我解决了 (2认同)