当我尝试捆绑安装时,我收到以下消息:
Your Ruby version is 2.0.0, but your Gemfile specified 2.1.0
在我的Gemfile中,我有以下内容:
ruby '2.1.0'
当我在控制台中运行ruby -v
时,我得到:
ruby 2.1.0p0 (2013-12-25 revision 44422) [x86_64-darwin12.0]
Ruby 2.1.0p0是什么意思?我的Gemfile应该有什么版本?为什么错误告诉我我有Ruby版本2.0.0?
答案 0 :(得分:90)
运行
gem install bundler
或
gem update bundler
可以解决您的问题。
对于所有新安装的Ruby版本,您应该更新或安装新的捆绑包。
答案 1 :(得分:13)
在项目的顶级目录中,创建一个名为.ruby-version
的文件,其中包含(等待它...... )
2.1.0
这显然是现在规范版本的交叉{rbenv,rvm}
方式。
答案 2 :(得分:12)
答案 3 :(得分:5)
对我来说,没有一个答案有帮助。我把它固定好关闭并再次打开终端。
答案 4 :(得分:3)
如果您使用的是Capistrano,还应检查deploy.rb
文件中的set :rbenv_ruby
配置。
答案 5 :(得分:3)
我用ruby-install升级后得到了这个。解决了这个问题:
gem install bundler
接下来是:
$HOME/.rubies/ruby-2.4.1/bin/bundle
没有必要指定路径,因为which bundle
表示它已经在使用此路径。但是如果在没有路径的情况下运行bundle
,则会出现版本错误。我不知道为什么?
答案 6 :(得分:2)
此问题的主要原因是您的计算机和gemfile使用了不同的ruby版本
因此存在多个问题和解决方案,您可以尝试以下解决方案
1-如果您的计算机未使用同一版本,请确保您的计算机安装并使用相同版本的gemfile尝试使用rvm安装该版本
import numpy as np
a1 = [
np.array(['2019-12-01', '0.03555', '0.03', '0.03', '0.03']),
np.array(['2019-12-02', '0.03', '0.03', '1', '0.03'])
]
a2 = [
np.array(['2019-12-01', '1', '1', '1', '1']),
np.array(['2019-12-02', '1', '1', '1', '20'])
]
def array_adder(A, B):
C = []
for outer, outer2 in zip(A, B):
temp = []
if len(outer) == len(outer2):
for inner, inner2 in zip(outer, outer2):
if len(temp) < 1:
temp.append(inner)
else:
temp.append(float(inner) + float(inner2))
C.append(temp)
else:
print('Arrays must have the same length..')
break
return C
print(array_adder(a1, a2))
使用此命令确保版本安装成功
$ rvm install ruby_version_you_want
,如果未将新版本设置为默认版本,则可以使用此命令进行设置
$ rvm list
您可以检查当前的红宝石版本
$ rvm --default use ruby_version_you_want
2-如果您遇到相同的问题,请检查捆扎机
$ rvm current
$ ruby -v
3-在某些情况下,春季仍然使用旧版本,因此您需要将其停止
$ gem install bundler
or
$ gem update bundler
4-另一种情况,您可以输入
$ ./bin/spring stop
然后尝试重新安装捆绑包
5-在某些情况下,安装更新的ruby版本后,您只需要重新启动终端即可。
6-另一个解决方案,但我不建议您将其作为项目的顶层目录,创建一个名为.ruby-version的文件,其中包含您正在运行的运行的ruby版本
7-如果仍然存在此问题,请尝试删除ruby并仅安装更新的版本
$ gem pristine --all
答案 7 :(得分:2)
如果您使用rbenv来管理ruby环境,您可以在项目目录中运行rbenv local 2.1.0
来设置gemfile要求的ruby版本。
答案 8 :(得分:2)
我为非常相似的东西而苦苦挣扎,只是版本不同。我最终通过RubyGems并将其最新版本的捆绑程序放入了我的gemfile中,将其修复:
gem 'bundler', '~> 2.1', '>= 2.1.4'
仍然存在一个问题,但是在那之后,我跑了:
gem update --system
它解决了Rails项目文件夹中Ruby的混合版本。在执行此操作之前,您可能必须重新启动终端。另外,我注释掉了捆绑程序gem文件,看来gem update --system命令真正解决了该问题。
我是从here那里得到的:
答案 9 :(得分:2)
没有其他建议对我有用。在服务器上,我必须这样做:
rvm --default use [correct version number]
答案 10 :(得分:2)
以上答案均不适合我,但
$ gem pristine --all
对我有用吗
buona fortuna
答案 11 :(得分:1)
brew cleanup ruby
为我工作,因为我使用HomeBrew安装Ruby。
我最近通过HomeBrew更新了Ruby,但HomeBrew并未删除旧版本。 brew cleanup ruby
将删除旧版本的Ruby。
答案 12 :(得分:1)
如果您使用的是rbenv,请运行
rbenv local 2.0.0
然后
bundle install
答案 13 :(得分:1)
当您安装新版本的ruby并将.ruby-version和Gemfile更新到新版本而未先安装新版本的ruby的所有gem时,可能会发生这种情况。
$ bundle install
,您可能还需要获取.profile或重新启动Shell。
答案 14 :(得分:1)
确保您的服务器配置指向正确的ruby安装。
我已经在.ruby-version
文件中更新了我的Ruby版本并且没有修复它。 ruby -v
也显示了正确的版本,但我忘记更新我的服务器配置。
例如,使用我的NGINX服务器块中的rbenv,NGINX和Pushion Passenger:
passenger_ruby /Users/myusername/.rbenv/versions/2.3.1/bin/ruby;
我需要改为...
passenger_ruby /Users/myusername/.rbenv/versions/2.3.3/bin/ruby;
然后重新启动NGINX并且它有效。
答案 15 :(得分:1)
对于更高级的项目,支持.versions.conf,其中可以指定多个Ruby版本。
生成.versions.conf:
rvm --create --versions-conf use 1.9.3@my_app
示例.versions.conf:
ruby=jruby-1.6.8
ruby-gemset=my_app
env-JRUBY_OPTS=--1.9
答案 16 :(得分:0)
感谢您提供有关安装/更新捆绑程序的信息,但对我而言不起作用。
我不得不做rbenv rehash
答案 17 :(得分:0)
有相同的错误。执行以下操作将其修复。我正在使用ruby 2.5.5和rbenv。从2.5.1升级。
答案 18 :(得分:0)
我通过将红宝石版本更新为ruby '2.4.0'
解决了这个问题
然后bundle install
答案 19 :(得分:0)
我打开了Gemfile,并用自己的版本的红宝石2.7.1
替换了2.7.0
,现在一切正常。
答案 20 :(得分:0)
只需关闭我正在使用的终端,然后打开一个新终端即可。有时,直到关闭会话后,更新才会立即生效。我发现这是我遇到的许多rails错误的情况。
答案 21 :(得分:-3)
我面对错误消息
ruby '2.3.0'
并通过以下步骤解决:
ruby '2.5.1'
更改为import com.opencsv.bean.CsvBindByName;
import java.io.Serializable;
public class TestObject implements Serializable {
@CsvBindByName
int fieldx;
@CsvBindByName
int fieldy;
public TestObject() {
}
public TestObject(int x, int y) {
this.fieldx = x;
this.fieldy = y;
}
public int getX() {
return fieldx;
}
public int getY() {
return fieldy;
}
public void setX(int x) {
this.fieldx = x;
}
public void setY(int y) {
this.fieldy = y;
}
@Override
public String toString(){
return "{" + fieldx + "," + fieldy + "}";
}
}
并保存Gemfile 问题完全解决了。