如何解决“你的Ruby版本是1.9.3,但你的Gemfile指定为2.0.0”

我创build了一个Ruby项目,但是在运行bundle updatebundle install会返回一个错误:

 Your Ruby version is 1.9.3, but your Gemfile specified 2.0.0 

它的形象是: http : //i.imgur.com/dZMhI11.png?1

我的gemfile是:

 ruby '2.0.0' #ruby-gemset=railstutorial_rails_4_0 gem 'rails', '4.0.0' group :development do gem 'sqlite3', '1.3.8' end gem 'sass-rails', '4.0.0' gem 'uglifier', '2.1.1' gem 'coffee-rails', '4.0.0' gem 'jquery-rails', '3.0.4' gem 'turbolinks', '1.1.1' gem 'jbuilder', '1.0.2' group :doc do gem 'sdoc', '0.3.20', require: false end 

如果你运行ruby -v你会看到你已经安装了Ruby 1.9.3,但是你的Gemfile的第一行指定了你想要使用Ruby 2.0.0。

您应该安装Ruby 2.0.0,或者更改Gemfile中的第一行以指定Ruby 1.9.3。

我已经注意到这种情况发生,当我试图bundle install与一个新的RVM gemset,还没有包括捆绑器(因为它回落在引用系统ruby的系统捆绑软件安装)。

运行gem install bundler为我固定。

这些都没有为我工作,但我终于明白了:

 spring stop 

我有一个Rails 4项目,它使用了一些叫做Spring的东西来保持Rails环境在后台运行,以提高速度。

我用Ruby 2.1.1开始了Spring,但是之后我升级到了2.1.2(在Gemfile和.ruby-version中)。 我的理论是,Spring继续在2.1.1上运行,所以导致了这个错误。

Heroku Toolbelt可能会导致它,如果你正在使用heroku命令,或者更具体地说,使用bundle exec heroku ,你永远不应该这样做。 如果您可以通过在heroku调用前删除bundle exec来解决您的问题,那么请先尝试一下。 如果没有,那么按照下面的build议。


2017年2月25日更新:
Heroku Toolbelt已被更名为Heroku CLI 。 请参阅以下链接以获取更新的安装/卸载说明:
https://devcenter.heroku.com/articles/heroku-cli
https://github.com/heroku/cli

以下未经编辑提供原始文章(用于旧版指令):


如果您从官方网站安装了Heroku工具带:

/usr/bin/heroku的顶部,它可能会说类似#!/usr/local/heroku/ruby/bin/ruby

尝试运行/usr/local/heroku/ruby/bin/ruby -v ,看看它是否输出ruby1.9.3。

https://github.com/heroku/toolbelt/issues/53

 › heroku --version heroku-toolbelt/3.26.1 (x86_64-darwin10.8.0) ruby/1.9.3 

注意那里最后指定的1.9.3。

—不要使用此页面及其打包的安装程序在OSX上安装Heroku CLI:

https://toolbelt.heroku.com/

因为列出的技术细节很重要:

heroku命令行客户端将被安装到/ usr / local / heroku中,/ usr / local / heroku / bin将被添加到您的PATH中。

这是不利的,因为RVM会这样做:

 › rvm current ruby-2.1.1 › heroku --version heroku-toolbelt/3.26.1 (x86_64-darwin10.8.0) ruby/1.9.3 

即使我已经用RVM指定了另一个Ruby版本,也有令人恼火的1.9.3版本。

卸载Heroku工具栏

没有OSX的官方卸载程序,如果您认为应该有一个, 请在此处填写+1: https : //github.com/heroku/toolbelt/issues/8

手动卸载(移至垃圾箱,保留备份以防万一发生故障):

 mv ~/.heroku ~/.Trash sudo mv /usr/local/heroku ~/.Trash sudo mv /usr/bin/heroku ~/.Trash 

改为用自制软件安装Heroku toolbelt

因为它将当前的RVM版本正确链接到Heroku工具栏。 跑:

brew install heroku-toolbelt

Heroku工具带将只安装在这个位置:

/usr/local/Cellar/heroku-toolbelt/3.21.4

(如果需要,还可以使用brew uninstall heroku-toolbelt轻松删除它。)

testing安装:

 › rvm current ruby-2.0.0-head@bloggery › rvm list rvm rubies =* ruby-2.0.0-head [ x86_64 ] ruby-2.1-head [ x86_64 ] ruby-2.1.1 [ x86_64 ] # => - current # =* - current && default # * - default › rvm use ruby-2.1.1 Using /Users/Username/.rvm/gems/ruby-2.1.1 › rvm current ruby-2.1.1 › heroku --version heroku-toolbelt/3.26.1 (x86_64-darwin12.0) ruby/2.1.1 You have no installed plugins. › rvm use ruby-2.0.0-head Using /Users/Username/.rvm/gems/ruby-2.0.0-head › heroku --version heroku-toolbelt/3.26.1 (x86_64-darwin13.4.0) ruby/2.0.0 You have no installed plugins. 

注意它现在在最后一个命令的末尾说了2.0.0。 你现在用你在RVM中指定的任何rvm current ruby版本来运行Heroku客户端。

如果你键入rvm list并且显示了Ruby的2.0版本作为你的当前版本,并且你仍然得到这个错误,inputrvm use (ruby version)为我解决了这个问题。

“我有使用rbenv,通过酿造安装相同的问题。

我想不出来,尝试了以上所有,我最终转向rvm解决了它。

为了回应这个post,你必须确保你安装ruby版本后运行rbenv rehash 。 当我遇到同样的问题时,这似乎对我有用。

如果您使用的是RVM或rbenv等Ruby版本pipe理器,那么在您的项目的顶层目录中创build一个名为.ruby-version的文件,其中包含.ruby-version中指定的版本,例如:

 2.0.0 

这显然是现在指定版本的交叉{rbenv,rvm}方式。

在我的情况下,我用rvm get head更新RVM版本,它的工作。

ruby-switch被从Ubuntu 14.04删除了 。 我会留下这个答案的后代,但你可能需要一个不同的解决scheme。 看看“ 安装ruby2.0没有ruby开关? ”以及。


如果您已经安装了新版本的Ruby,但是仍然收到有关Gemfile不匹配的错误,则可能需要使用ruby-switch将新版本的Ruby设置为默认值:

 sudo apt-get update && sudo apt-get upgrade sudo apt-get install ruby2.1 ruby2.1-dev sudo ruby-switch --set ruby2.1 sudo gem install bundler 

当发现这个错误时,我发现重新安装的RVM做了诡计,因为任何其他build议都不起作用。

在通过rbenv升级Ruby版本之后,我遇到了这个问题。 我试过了上面提到的spring stop命令。

当我跑了,我又收到一条消息,build议我运行gem pristine --all

警告:运行gem pristine – 全部重新生成您安装的gemspecs将会提高Spring的启动性能。

所以我执行了这个命令,然后事情恢复了正常。

我有使用rbenv,通过Homebrew安装相同的问题。

我想不出来,尝试了以上所有,所以我最终切换到解决它的RVM。

我发现我的耙子或rails目录下的bin目录是使用另一个版本的ruby。 我比较了两台服务器(生产和开发)中的两个rake脚本,并向我展示了他们使用的是不同的ruby版本。 所以我不得不相应更新。

 1c1 < #!/usr/bin/env ruby --- > #!/usr/bin/env ruby1.9.1 

我有这个问题,当我不知不觉中有一个'Gemfile'的站点文件夹(目录),我做我的项目文件夹(目录)。 这是错误所指的“Gemfile”。 解决scheme是我删除了“Gemfile”,并解决了问题。

终于解决了几个月来一直困扰着我的问题之后,我在一阵轻松的时刻分享了这个消息。

 rails new myapp //Your Ruby version is 2.1.5, but your Gemfile specified 2.0.0 

我试图从字面上解决这个问题,我可以在网上find这个问题,结果我的问题是由于我不小心在用户/ MyName中安装了一个Rails应用程序,而且它正在读取Gemfile。

所以,在你去尝试这里提供的其他各种解决scheme之前,你可能需要花点时间来确认你没有做过类似的事情。

我正在运行Windows开发环境。

我刚刚添加C:\Ruby22-x64\bin在我的pathvariables之前heroku\bin条目。

我有这个确切的问题 – 几秒钟后,看着Mac OSXterminal确认Ruby 2.0.0已成功安装。

Mac OSX附带已经安装的Ruby的过期版本,并将其设置为默认的Ruby。 为了解决这个问题,你可以安装“JewelryBox”,一个迷人的,可爱的应用程序,让您的GUI查看和pipe理多个ruby(如果你有一个Mac上的多个开发环境很有帮助)。 您可以使用它来取消selectMac OSX的默认Ruby,并select您新安装的Ruby。