80

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

20 回答 20

170

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

为我运行gem install bundler固定。

于 2014-01-05T16:54:02.293 回答
41

这些都不适合我,但我终于想通了:

spring stop

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

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

于 2014-06-13T13:18:51.367 回答
29

如果您使用的是heroku命令,或者更具体地说是使用 , Heroku Toolbeltbundle 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。

--- 不要使用此页面及其打包的安装程序在 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

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

卸载 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 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 current您现在可以使用您在 RVM 中指定的任何 ruby​​ 版本运行 Heroku 客户端。

于 2015-02-20T15:45:55.237 回答
25

如果您运行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'
于 2013-10-13T05:09:12.700 回答
11

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

于 2013-12-18T19:32:43.637 回答
5

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

2.0.0

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

于 2014-05-14T15:34:04.123 回答
5

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

我想不通,尝试了以上所有方法,我最终切换到 rvm 解决了它。”

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

于 2014-12-03T20:39:35.660 回答
3

就我而言,我曾经rvm get head更新 RVM 版本并且它有效。

于 2014-03-04T04:40:08.557 回答
3

ruby-switch 已从 ubuntu 14.04 及更高版本中删除。我会把这个答案留给后代,但你可能需要一个不同的解决方案。还可以查看“安装 ruby​​ 2.0 而不使用 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
于 2014-06-20T18:01:33.803 回答
2

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

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

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

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

于 2015-05-31T03:39:45.690 回答
2

这个问题的主要原因是你的机器和 gemfile 使用了不同的 ruby​​ 版本

所以这个问题有多个问题和解决方案您可以一一尝试以下解决方案

1-确保您的机器安装并使用相同版本的 gemfile,如果您的机器不使用相同版本,请尝试使用 rvm 安装此版本

$ rvm install ruby_version_you_want

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

$ rvm list

如果新版本没有设置为默认值,您可以使用此命令进行设置

$ rvm --default use ruby_version_you_want 

您可以检查当前的 ruby​​ 版本

 $ 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 
于 2020-02-11T12:57:48.877 回答
1

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

于 2014-02-18T12:26:19.053 回答
0

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

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

于 2014-06-24T14:17:15.233 回答
0

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

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

于 2013-12-07T08:12:05.213 回答
0

我发现 bin 目录下的 rake 或 rails 脚本正在使用另一个版本的 ruby​​。我比较了来自两台服务器(生产和开发)的两个 rake 脚本,结果显示它们使用不同的 ruby​​ 版本。所以我不得不相应地更新。

1c1
< #!/usr/bin/env ruby
---
> #!/usr/bin/env ruby1.9.1
于 2016-07-28T09:52:05.870 回答
0

我遇到了同样的问题,然后发现并尝试了以下步骤

步骤1:rvm use jruby-9.2.9.0

第2步:source $HOME/.rvm/scripts/rvm

于 2021-11-23T09:49:26.713 回答
0

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

要检查此执行which ruby并仔细查看路径。如果它不是您期望的实际版本管理器,那么您将遇到此问题。最简单的解决方法是使用您想要的一个,然后摆脱另一个。如果出于某种原因您需要同时保留两者,您可能需要更改 shell 的 .rc 文件中的路径顺序。

于 2019-02-19T05:54:18.397 回答
0

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

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

于 2018-09-21T12:26:09.687 回答
-1

我正在运行 Windows 开发环境。

我只是在进入C:\Ruby22-x64\bin之前添加了我的路径变量heroku\bin

于 2015-07-30T18:53:34.950 回答
-1

在终于解决了困扰我数月的问题后,我松了一口气,分享了这个花絮。

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

我尝试了在网上可以找到的解决这个问题的所有方法,最终发现我的问题是因为我不小心在 Users/MyName 中安装了一个 Rails 应用程序,它正在读取那个 Gemfile。

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

于 2015-11-17T02:08:04.173 回答