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

the*_*one 71 ruby ruby-on-rails

我创建了一个Ruby项目,但在运行时bundle update,并bundle install返回一个错误:

Your Ruby version is 1.9.3, but your Gemfile specified 2.0.0
Run Code Online (Sandbox Code Playgroud)

它的形象是: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
Run Code Online (Sandbox Code Playgroud)

mis*_*tim 165

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

gem install bundler为我固定跑步.

  • 记住"gem install bundler"之后的"rbenv rehash" (37认同)
  • 谢谢@mistertim.当做'ruby -v`给出正确的版本时,我完美地为我工作,并且bundle没有检测到它. (3认同)
  • 当我尝试`gem install rake`时,它对我有用 (3认同)
  • 可能很明显,但只是补充一点,您需要在安装 bundler gem 后实际运行 `bundle`。(否则,由于先前创建的二进制文件,错误仍然可能发生,这可能会误导人们认为它不起作用。) (2认同)

Hen*_*k N 39

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

spring stop
Run Code Online (Sandbox Code Playgroud)

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

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


Mag*_*gne 29

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


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
Run Code Online (Sandbox Code Playgroud)

注意那里最后指定的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
Run Code Online (Sandbox Code Playgroud)

有一个令人恼火的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
Run Code Online (Sandbox Code Playgroud)

用自制软件安装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.
Run Code Online (Sandbox Code Playgroud)

注意它现在在那里的最后一个命令的末尾说2.0.0.现在,rvm current您可以使用在RVM中指定的任何ruby版本运行Heroku客户端.


Jer*_*een 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'
Run Code Online (Sandbox Code Playgroud)

  • 我使用rvm,`ruby -v`显示我的ruby版本是2.2.0,但错误消息说ruby版本是2.0.0 (30认同)

小智 11

如果你键入rvm list并显示一个2.0版本的Ruby作为你当前的版本,你仍然会收到此错误,键入rvm use (ruby version)修复此问题给我.


Cla*_*ges 5

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

2.0.0
Run Code Online (Sandbox Code Playgroud)

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


小智 5

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

我无法弄明白,尝试了上述所有内容,我最终切换到解决它的rvm."

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