您的Ruby版本是2.0.0,但您的Gemfile指定为2.1.0

时间:2014-04-13 05:38:40

标签: ruby gemfile

当我尝试捆绑安装时,我收到以下消息:

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?

22 个答案:

答案 0 :(得分:90)

运行

gem install bundler

gem update bundler 

可以解决您的问题。

对于所有新安装的Ruby版本,您应该更新或安装新的捆绑包。

答案 1 :(得分:13)

在项目的顶级目录中,创建一个名为.ruby-version的文件,其中包含(等待它......

2.1.0

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

答案 2 :(得分:12)

如果你在Rails项目中得到这个,并且你最近升级了你的Ruby版本,你可能仍然使用旧版本的Ruby运行spring

./bin/spring stop

将解决此问题。

答案 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升级。

  • rbenv rehash
  • gem卸载捆绑程序
  • gem安装捆绑程序
  • gem install bundler:1.17.3(我的应用需要特定的bundler -v 1.17.3)
  • gem安装导轨

答案 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'

并通过以下步骤解决:

  1. 打开位于您目录的Gemfile。
  2. 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
  3. 返回项目并运行捆绑包更新。
  4. 问题完全解决了。