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


76

我创建了一个Ruby项目,但在运行时bundle update,并bundle 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

2
请不要在问题的关键部分使用图片或异地存储。链接腐烂和断裂。到那时,这个问题对于寻找类似解决方案的未来人们将毫无意义。而是将错误的重要部分和您的gemfile复制并粘贴到问题的文本中。
Tin Man

Answers:


26

如果你跑 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'

ur指定的Gemfile 2.1.0〜/ projects / site(newtemplate)$ ruby​​ -v ruby​​ 2.1.0p0(2013-12-25修订版44422)[i686-linux]〜/ projects / site(newtemplate)$ rails -v您的Ruby版本是1.9.3,但是您的Gemfile指定了2.1.0〜/ projects / site(newtemplate)$ rails s您的Ruby版本是1.9.3,但是您的Gemfile指定了2.1.0〜/ projects / site(newtemplate)$ bundle exec rails s您的Ruby版本是1.9.3,但是您的Gemfile指定了2.1.0我该如何解决?
prasad.surase 2014年

32
我使用rvm,并ruby -v显示我的ruby版本是2.2.0,但是错误消息说ruby版本是2.0.0
towry 2015年

@mistertim在下面的回答为我解决了这个问题$ gem install bundler
Diego Diaz de Berenguer

167

我试着去发现这种情况 bundle install使用尚未包含捆绑软件的新RVM gemset(因为它退回到了引用系统ruby的系统捆绑软件安装中)。

跑步gem install bundler对我来说是固定的。


3
谢谢@mistertim。ruby -v在提供正确的版本时,对我来说工作非常完美,而bundle并没有检测到它。
肯尼斯(Kenneth)2014年

非常感谢!我不知道发生了什么!
okysabeni 2014年

38
在“宝石安装捆绑器”之后记住“ rbenv rehash”
AndrewW

1
你救了我的一天。谢谢。
丹妮尔·弗鲁特

2
可能很明显,但要补充一点是,您需要bundle在安装bundler gem之后实际运行。(否则,由于先前创建的二进制文件,该错误仍然可能发生,可能会误导人们以为它不起作用。)
mahemoff 2016年

41

这些都不对我有用,但是我终于弄明白了:

spring stop

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

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


在安装Spree之后,然后更新了我的Ruby版本,这对我有用。谢谢。

谢谢!我认为,这也是我的问题。
RonLugge 2014年

29

如果您正在使用heroku命令,或更具体地说,使用bundle exec heroku,则不要使用Heroku Toolbelt引起该问题。如果您可以通过删除通话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,看看是否输出红宝石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: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工具带安装在以下位置:

/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 current您可以使用RVM中指定的任何Ruby版本运行Heroku客户端。


很棒的答案,谢谢。请注意,这与rbenv相同。
丹·科恩,

1
太好了,我遇到了这个确切的问题。一则评论-您的问题链接不再起作用。
mattnedrich '17

感谢@mattnedrich,我更新了帖子,并在顶部添加了一些指向github上新位置的新链接:github.com/heroku/cli
Magne

唯一对我有用的东西!确实是导致问题的旧的heroku工具带。
rimkashox

11

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


这个解决方案对我来说效果很好,因为我正在使用不同版本的ruby的多个项目。
Jais Anasrulloh Ja'fari

5

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

我无法弄清楚,尝试了以上所有方法,最后我改用rvm解决了该问题。”

作为对这篇文章的回应,您必须确保rbenv rehash在安装ruby版本后运行。当我遇到相同的问题时,这似乎对我有用。


跑步rbenv rehash也为我解决了这个问题。
MoskitoHero 2015年

哇,我没想到滚动那么远就可以得到想要的答案:)我不想转向rvm。
GabLeRoux

5

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

2.0.0

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


3

从ubuntu 14.04及更高版本中删除了ruby-switch。对于后代,我将保留此答案,但您可能需要其他解决方案。还要检查“是否安装不带ruby-switch的ruby 2.0? ”。


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

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

2
真好 sudo apt-get install ruby-switch不见了。
条纹


2

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

当我跑步时,我又收到一条消息,提示我跑步 gem pristine --all

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

所以我运行了该命令,然后一切恢复正常。


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-在某些情况下,spring仍在使用旧版本,因此您需要将其停止

$ ./bin/spring stop

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

$ gem pristine --all 

并尝试再次安装捆绑软件

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

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

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

 $ aptitude purge ruby 

1

我发现在发生此错误时重新安装RVM可以解决问题,因为其他任何建议均不起作用。


0

使用通过自制程序安装的rbenv时,我遇到了同样的问题。

我无法弄清楚,尝试了以上所有方法,因此最终切换到RVM来解决了这个问题。


0

我遇到了这个确切的问题-观看Mac OSX Terminal确认安装了Ruby 2.0.0后仅几秒钟。

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


0

我发现bin目录下的rake或rails脚本正在使用另一个版本的ruby。我比较了来自两个服务器(生产和开发)的两个rake脚本,结果表明它们使用的是不同的ruby版本。因此,我必须相应地进行更新。

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

0

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

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


0

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

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


-1

在终于解决了困扰我数月的问题之后,我感到非常欣慰,这是我的一句话。

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

我实际上尝试了可以​​在Web上找到的该问题的所有解决方案,最终发现我的问题是由于我不小心在Users / MyName中安装了Rails应用程序引起的,并且正在读取该Gemfile。

因此,在尝试使用此处提供的其他各种解决方案之前,您可能需要花一点时间来确认您尚未执行类似的操作。


-1

我正在运行Windows开发环境。

我只是C:\Ruby22-x64\binheroku\bin输入之前添加了path变量。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.