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为我固定跑步.
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 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
Run Code Online (Sandbox Code Playgroud)
注意那里最后指定的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
Run Code Online (Sandbox Code Playgroud)
有一个令人恼火的1.9.3版本,即使我已经指定了另一个带RVM的Ruby版本.
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)
因为它正确地将当前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或rbenv之类的Ruby版本管理器,则在项目的顶级目录中创建一个名为的文件,.ruby-version其中包含Gemfile中指定的版本,例如:
2.0.0
Run Code Online (Sandbox Code Playgroud)
显然,这是{rbenv,rvm}现在指定版本的交叉方式。
小智 5
"我使用rbenv遇到了同样的问题,通过brew安装.
我无法弄明白,尝试了上述所有内容,我最终切换到解决它的rvm."
在回复这篇文章时,您必须确保rbenv rehash在安装ruby版本后运行.当我遇到同样的问题时,这似乎对我有用.