如何解决“你的Ruby版本是1.9.3,但你的Gemfile指定为2.0.0”
我创build了一个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
如果你运行ruby -v
你会看到你已经安装了Ruby 1.9.3,但是你的Gemfile的第一行指定了你想要使用Ruby 2.0.0。
您应该安装Ruby 2.0.0,或者更改Gemfile中的第一行以指定Ruby 1.9.3。
我已经注意到这种情况发生,当我试图bundle install
与一个新的RVM gemset,还没有包括捆绑器(因为它回落在引用系统ruby的系统捆绑软件安装)。
运行gem install bundler
为我固定。
这些都没有为我工作,但我终于明白了:
spring stop
我有一个Rails 4项目,它使用了一些叫做Spring的东西来保持Rails环境在后台运行,以提高速度。
我用Ruby 2.1.1开始了Spring,但是之后我升级到了2.1.2(在Gemfile和.ruby-version中)。 我的理论是,Spring继续在2.1.1上运行,所以导致了这个错误。
Heroku Toolbelt可能会导致它,如果你正在使用heroku
命令,或者更具体地说,使用bundle exec heroku
,你永远不应该这样做。 如果您可以通过在heroku
调用前删除bundle exec
来解决您的问题,那么请先尝试一下。 如果没有,那么按照下面的build议。
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
,看看它是否输出ruby1.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:
因为列出的技术细节很重要:
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 toolbelt
因为它将当前的RVM版本正确链接到Heroku工具栏。 跑:
brew install heroku-toolbelt
Heroku工具带将只安装在这个位置:
/usr/local/Cellar/heroku-toolbelt/3.21.4
(如果需要,还可以使用brew uninstall heroku-toolbelt
轻松删除它。)
testing安装:
› 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客户端。
如果你键入rvm list
并且显示了Ruby的2.0版本作为你的当前版本,并且你仍然得到这个错误,inputrvm use (ruby version)
为我解决了这个问题。
“我有使用rbenv,通过酿造安装相同的问题。
我想不出来,尝试了以上所有,我最终转向rvm解决了它。
为了回应这个post,你必须确保你安装ruby版本后运行rbenv rehash
。 当我遇到同样的问题时,这似乎对我有用。
如果您使用的是RVM或rbenv等Ruby版本pipe理器,那么在您的项目的顶层目录中创build一个名为.ruby-version
的文件,其中包含.ruby-version
中指定的版本,例如:
2.0.0
这显然是现在指定版本的交叉{rbenv,rvm}
方式。
在我的情况下,我用rvm get head
更新RVM版本,它的工作。
ruby-switch被从Ubuntu 14.04删除了 。 我会留下这个答案的后代,但你可能需要一个不同的解决scheme。 看看“ 安装ruby2.0没有ruby开关? ”以及。
如果您已经安装了新版本的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
当发现这个错误时,我发现重新安装的RVM做了诡计,因为任何其他build议都不起作用。
在通过rbenv升级Ruby版本之后,我遇到了这个问题。 我试过了上面提到的spring stop
命令。
当我跑了,我又收到一条消息,build议我运行gem pristine --all
警告:运行gem pristine – 全部重新生成您安装的gemspecs将会提高Spring的启动性能。
所以我执行了这个命令,然后事情恢复了正常。
我有使用rbenv,通过Homebrew安装相同的问题。
我想不出来,尝试了以上所有,所以我最终切换到解决它的RVM。
我发现我的耙子或rails目录下的bin目录是使用另一个版本的ruby。 我比较了两台服务器(生产和开发)中的两个rake脚本,并向我展示了他们使用的是不同的ruby版本。 所以我不得不相应更新。
1c1 < #!/usr/bin/env ruby --- > #!/usr/bin/env ruby1.9.1
我有这个问题,当我不知不觉中有一个'Gemfile'的站点文件夹(目录),我做我的项目文件夹(目录)。 这是错误所指的“Gemfile”。 解决scheme是我删除了“Gemfile”,并解决了问题。
终于解决了几个月来一直困扰着我的问题之后,我在一阵轻松的时刻分享了这个消息。
rails new myapp //Your Ruby version is 2.1.5, but your Gemfile specified 2.0.0
我试图从字面上解决这个问题,我可以在网上find这个问题,结果我的问题是由于我不小心在用户/ MyName中安装了一个Rails应用程序,而且它正在读取Gemfile。
所以,在你去尝试这里提供的其他各种解决scheme之前,你可能需要花点时间来确认你没有做过类似的事情。
我正在运行Windows开发环境。
我刚刚添加C:\Ruby22-x64\bin
在我的pathvariables之前heroku\bin
条目。
我有这个确切的问题 – 几秒钟后,看着Mac OSXterminal确认Ruby 2.0.0已成功安装。
Mac OSX附带已经安装的Ruby的过期版本,并将其设置为默认的Ruby。 为了解决这个问题,你可以安装“JewelryBox”,一个迷人的,可爱的应用程序,让您的GUI查看和pipe理多个ruby(如果你有一个Mac上的多个开发环境很有帮助)。 您可以使用它来取消selectMac OSX的默认Ruby,并select您新安装的Ruby。