如何修复“您的Ruby版本是1.9.3,但您的Gemfile指定为2.0.0”

时间:2013-10-13 05:05:33

标签: ruby-on-rails ruby

我创建了一个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

我的宝石文件是:

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

19 个答案:

答案 0 :(得分:164)

当我尝试使用尚未包含bundler的新RVM gemset bundle install时,我注意到了这种情况(因为它回退到引用系统ruby的系统捆绑器安装上)。

为我修复了gem install bundler

答案 1 :(得分:39)

这些都不适合我,但我终于明白了:

spring stop

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

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

答案 2 :(得分:29)

Heroku Toolbelt 可能会导致它,如果您使用heroku命令,或更具体地说,使用bundle exec heroku,您永远不应该这样做。如果您可以通过移除bundle exec来电前的heroku来解决问题,请先尝试。如果没有,请遵循以下建议。


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并查看它是否输出ruby 1.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。

--- NOT 使用此页面及其打包的安装程序在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,请在此处写+1:https://github.com/heroku/toolbelt/issues/8

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

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

使用自制软件安装Heroku工具带

因为它正确地将当前RVM版本链接到Heroku-toolbelt。运行:

brew install heroku-toolbelt

Heroku toolbelt将仅安装在此位置:

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

(如果您愿意,也可以使用brew uninstall heroku-toolbelt轻松删除它。)

测试安装:

› 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客户端。

答案 3 :(得分:24)

如果运行ruby -v,您将看到已安装Ruby 1.9.3,但Gemfile中的第一行指定您要使用Ruby 2.0.0。

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

Gemfile示例:

source 'https://rubygems.org'
ruby "1.9.3"

gem 'pry'

gem 'pry-nav'

# Use with command-line debugging, but not RubyMine
#gem 'debugger'

gem 'bundler'

答案 4 :(得分:11)

如果您输入rvm list并且它显示2.0版本的Ruby作为您当前的版本,但您仍然收到此错误,请键入rvm use (ruby version)为我解决此问题。

答案 5 :(得分:5)

“使用rbenv我遇到了同样的问题,通过brew安装。

我无法理解,尝试了上述所有内容,我最终切换到解决它的rvm。“

在回复此帖子时,您必须确保在安装ruby版本后运行rbenv rehash。当我遇到同样的问题时,这似乎对我有用。

答案 6 :(得分:4)

如果您使用的是RVM或rbenv等Ruby版本管理器,请在项目的顶级目录中创建一个名为.ruby-version的文件,其中包含Gemfile中的版本规范,例如: :

2.0.0

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

答案 7 :(得分:3)

在我的情况下,我使用rvm get head来更新RVM版本并且它有效。

答案 8 :(得分:3)

ruby-switch was removed from ubuntu 14.04 and up。我会给后人留下这个答案,但你可能需要一个不同的解决方案。查看“Install ruby 2.0 without ruby-switch?”。


如果您已经安装了新版本的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

答案 9 :(得分:2)

此问题的主要原因是您的计算机和gemfile使用了不同的ruby版本

因此存在多个问题和解决方案,您可以尝试以下解决方案

1-如果您的计算机未使用同一版本,请确保您的计算机安装并使用相同版本的gemfile尝试使用rvm安装该版本

$ rvm install ruby_version_you_want

使用此命令确保版本安装成功

$ rvm list

,如果未将新版本设置为默认版本,则可以使用此命令进行设置

$ rvm --default use ruby_version_you_want 

您可以检查当前的红宝石版本

 $ rvm current 
 $ ruby -v 

2-如果您遇到相同的问题,请检查捆扎机

  $ gem install bundler
    or
  $ gem update bundler 

3-在某些情况下,春季仍然使用旧版本,因此您需要将其停止

$ ./bin/spring stop

4-另一种情况,您可以输入

$ gem pristine --all 

然后尝试重新安装捆绑包

5-在某些情况下,安装更新的ruby版本后,您只需要重新启动终端即可。

6-另一个解决方案,但我不建议您将其作为项目的顶层目录,创建一个名为.ruby-version的文件,其中包含您正在运行的运行的ruby版本

7-如果仍然存在此问题,请尝试删除ruby并仅安装更新的版本

 $ aptitude purge ruby 

答案 10 :(得分:1)

我发现在发生此错误时重新安装RVM可以解决问题,因为任何其他建议都无效。

答案 11 :(得分:1)

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

当我跑步时,我收到另一条消息,建议我运行gem pristine --all

  

警告:运行gem pristine --all重新生成已安装的   gemspecs将改善Spring的启动性能。

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

答案 12 :(得分:0)

使用通过Homebrew安装的rbenv我遇到了同样的问题。

我无法弄明白,尝试了以上所有内容,所以我最终切换到解决它的RVM。

答案 13 :(得分:0)

对于任何发现此问题的建议,但没有一种典型的解决方案可以为您解决此问题,请检查您是否有多个ruby版本管理器。版本管理器有多个,某些软件或安装脚本将使用不同的版本管理器。我知道rbenvrvmasdf,至少还有一个我不记得其名字。我用其他工具安装了asdf,但没有意识到它发生了,并且导致指定的版本不匹配。

要对此进行检查,请执行which ruby并仔细查看路径。如果不是您期望的实际版本管理器,那么您将遭受此问题的困扰。最简单的解决方法是使用所需的一种,而摆脱另一种。如果出于某种原因需要同时保留两者,则可能需要更改Shell的.rc文件中路径的顺序。

答案 14 :(得分:0)

在使用乘客级宝石时遇到此错误。由于我安装了具有sudo访问权限的gem,因此它自己使用了默认版本的ruby。我相信原因可能是在系统上没有sudo访问权限的情况下安装了ruby,乘客也不知道要使用的实际ruby版本。

但是,在没有sudo访问权限的情况下安装gem及其apache模块可以解决此问题。

答案 15 :(得分:0)

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

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

答案 16 :(得分:-1)

我终于解决了一个困扰我好几个月的问题之后,在一个非常宽慰的时刻分享了这个花絮。

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

我尝试了解决这个问题的每个解决方案,我可以在网上找到,并且在一天结束时发现我的问题是因为我在Users / MyName中意外安装了Rails应用程序而且它正在读取的Gemfile。

因此,在您尝试此处提供的各种其他解决方案之前,您可能需要花一点时间确认您没有做过类似的事情。

答案 17 :(得分:-1)

我正在运行Windows开发环境。

我刚刚在/Default.aspx?something=hhh条目之前的路径变量中添加了C:\Ruby22-x64\bin

答案 18 :(得分:-1)

我有这个确切的问题 - 在观看Mac OSX终端确认已成功安装Ruby 2.0.0后几秒钟。

Mac OSX附带已安装过期版本的Ruby,并设置为默认Ruby。为了解决这个问题,您可以安装“JewelryBox”,这是一款迷人且可爱的应用程序,可以为您提供查看和管理多个红宝石的GUI(如果您在一台Mac上有多个开发环境,则会很有帮助)。您可以使用它来取消选择Mac OSX的默认Ruby并选择新安装的Ruby。