我创建了一个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
我的宝石文件是:
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
答案 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
以下未经编辑的原始帖子(传统说明):
在/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:
因为那里列出的技术细节很重要:
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版本。
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
因为它正确地将当前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版本管理器。版本管理器有多个,某些软件或安装脚本将使用不同的版本管理器。我知道rbenv
,rvm
,asdf
,至少还有一个我不记得其名字。我用其他工具安装了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。