【问题标题】:How to fix "Your Ruby version is 1.9.3, but your Gemfile specified 2.0.0"如何修复“您的 Ruby 版本是 1.9.3,但您的 Gemfile 指定了 2.0.0”
【发布时间】:2013-10-20 22:40:32
【问题描述】:

我创建了一个 Ruby 项目,但是在运行 bundle updatebundle 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

【问题讨论】:

  • 请不要将图像或异地存储用于您问题的重要部分。链接腐烂和断裂。到那时,对于未来寻找类似解决方案的人来说,这个问题将毫无意义。相反,请将错误的突出部分和您的 gemfile 复制并粘贴到问题的文本中。

标签: ruby-on-rails ruby


【解决方案1】:

我遇到了同样的问题,然后发现并尝试了以下步骤

第一步:rvm use jruby-9.2.9.0

第二步:source $HOME/.rvm/scripts/rvm

【讨论】:

    【解决方案2】:

    这个问题的主要原因是你的机器和 gemfile 使用了不同的 ruby​​ 版本

    所以这个问题有多个问题和解决方案,您可以一一尝试以下解决方案

    1- 如果您的机器不使用相同版本的 gemfile,请确保您的机器安装并使用相同版本的 gemfile 尝试使用 rvm 安装此版本

    $ rvm install ruby_version_you_want
    

    使用此命令确保版本安装成功

    $ rvm list
    

    如果新版本没有设置为默认值,您可以使用此命令进行设置

    $ rvm --default use ruby_version_you_want 
    

    你可以查看当前的 ruby​​ 版本

     $ rvm current 
     $ ruby -v 
    

    2- 如果您有同样的问题,请检查您的捆绑器

      $ gem install bundler
        or
      $ gem update bundler 
    

    3- 在某些情况下 spring 仍在使用旧版本,所以你需要停止它

    $ ./bin/spring stop
    

    4- 你可以输入另一种情况

    $ gem pristine --all 
    

    并尝试再次安装 bundle

    5- 在某些情况下,在安装更新的 ruby​​ 版本后,您只需要重新启动终端即可。

    6- 另一个解决方案,但我不推荐它作为您项目的顶级目录,创建一个名为 .ruby-version 的文件,其中包含您正在运行的 ruby​​ 版本

    7- 如果您仍然遇到此问题,请尝试删除 ruby​​ 并仅安装更新版本

     $ aptitude purge ruby 
    

    【讨论】:

      【解决方案3】:

      对任何发现此问题的人的建议,并且没有一个典型的解决方案可以为您解决此问题,请检查您是否有多个 ruby​​ 版本管理器。有多个版本管理器,一些软件或安装脚本会使用不同的。我知道rbenvrvmasdf,以及至少一个我不记得名字的人。我用其他工具安装了asdf,却没有意识到它发生了,导致指定的版本不匹配。

      要检查这个执行which ruby 并仔细查看路径。如果它不是您期望的实际版本管理器,那么您将遇到此问题。最简单的解决方法是使用您想要的一个,然后摆脱另一个。如果出于某种原因需要同时保留两者,则可能需要更改 shell 的 .rc 文件中的路径顺序。

      【讨论】:

        【解决方案4】:

        在使用乘客 gem 时遇到此错误。由于我使用 sudo 访问安装了这个 gem,它自己使用了一个默认版本的 ruby​​。我相信原因可能是在我的系统上安装 ruby​​ 时没有 sudo 访问权限,并且乘客不知道要使用的 ruby​​ 的实际版本。

        但是,在没有 sudo 访问权限的情况下安装 gem 及其 apache 模块解决了这个问题。

        【讨论】:

          【解决方案5】:

          如果您运行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'
          

          【讨论】:

          • ur Gemfile 指定 2.1.0 ~/projects/site (newtemplate) $ruby -v ruby​​ 2.1.0p0 (2013-12-25 revision 44422) [i686-linux] ~/projects/site ( newtemplate) $rails -v 你的 Ruby 版本是 1.9.3,但是你的 Gemfile 指定了 2.1.0 ~/projects/site (newtemplate) $rails s 你的 Ruby 版本是 1.9.3,但是你的 Gemfile 指定了 2.1.0 ~/projects /site (newtemplate) $bundle exec rails s 你的 Ruby 版本是 1.9.3,但你的 Gemfile 指定的是 2.1.0 我该如何解决这个问题?
          • 我使用的是 rvm,ruby -v 显示我的 ruby​​ 版本是 2.2.0,但错误消息说 ruby​​ 版本是 2.0.0
          • @mistertim 下面的回答为我解决了这个问题$ gem install bundler
          【解决方案6】:

          Heroku Toolbelt 可能会在您使用 heroku 命令,或者更具体地说,使用 bundle exec heroku 时导致它,而您不应该这样做。如果您可以通过删除 heroku 呼叫前面的 bundle exec 来解决您的问题,请先尝试。如果没有,请按照以下建议进行操作。


          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 并查看它是否输出 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。

          --- 请使用此页面及其打包的安装程序在 OSX 上安装 Heroku CLI:

          https://toolbelt.heroku.com/

          因为这里列出的技术细节很重要:

          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 工具带

          因为它将当前 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 客户端。

          【讨论】:

          • 很棒的答案,谢谢。请注意,这与 rbenv 相同。
          • 这太棒了,我遇到了这个问题。一条评论 - 您的问题链接不再有效。
          • 感谢@mattnedrich,我更新了帖子,在顶部添加了一些指向 github 上新位置的新链接:github.com/heroku/cli
          • 唯一对我有用的东西!确实是导致问题的旧 heroku 工具带。
          【解决方案7】:

          我发现我在 bin 目录下的 rake 或 rails 脚本正在使用另一个版本的 ruby​​。我比较了来自两台服务器(生产和开发)的两个 rake 脚本,结果表明它们使用不同的 ruby​​ 版本。所以我不得不相应地更新。

          1c1
          < #!/usr/bin/env ruby
          ---
          > #!/usr/bin/env ruby1.9.1
          

          【讨论】:

            【解决方案8】:

            我遇到了这个确切的问题 - 在观看 Mac OSX 终端确认 Ruby 2.0.0 已成功安装后几秒钟。

            Mac OSX 附带已安装的过期版本的 Ruby,并将其设置为默认 Ruby。为了解决这个问题,您可以安装“JewelryBox”,这是一款迷人而可爱的应用程序,它为您提供了一个 GUI 来查看和管理多个 rubies(如果您在一台 Mac 上有多个开发环境,这很有帮助)。您可以使用它取消选择 Mac OSX 的默认 Ruby 并选择您新安装的 Ruby。

            【讨论】:

              【解决方案9】:

              如果您使用的是 RVM 或 rbenv 等 Ruby 版本管理器,则在项目的顶级目录中创建一个名为 .ruby-version 的文件,其中包含您的 Gemfile 中指定的版本,例如:

              2.0.0
              

              这显然是现在指定版本的 cross-{rbenv,rvm} 方式。

              【讨论】:

                【解决方案10】:

                如果您输入 rvm list 并且它显示 Ruby 的 2.0 版本作为您当前的版本并且您仍然收到此错误,输入 rvm use (ruby version) 为我解决了这个问题。

                【讨论】:

                • 这个解决方案非常适合我,因为我正在处理多个使用不同 ruby​​ 版本的项目。
                【解决方案11】:

                当我尝试 bundle install 使用尚未包含捆绑器的新 RVM gemset 时,我注意到发生了这种情况(因为它依赖于引用系统 ruby​​ 的系统捆绑器安装)。

                运行 gem install bundler 已为我修复。

                【讨论】:

                • 谢谢@mistertim。当 ruby -v 提供正确的版本时,对我来说非常有效,而 bundle 没有检测到它。
                • 非常感谢!我不知道发生了什么!
                • 记住“gem install bundler”之后的“rbenv rehash”
                • 你拯救了我的一天。谢谢。
                • 可能很明显,但只是补充一点,您需要在安装捆绑器 gem 后实际运行 bundle。 (否则,由于以前创建的二进制文件,错误仍然可能发生,这可能会误导人们认为它不起作用。)
                【解决方案12】:

                在我的例子中,我使用rvm get head 来更新 RVM 版本并且它工作正常。

                【讨论】:

                  【解决方案13】:

                  这些都不适合我,但我终于弄明白了:

                  spring stop
                  

                  我有一个 Rails 4 项目,它使用称为 Spring 的东西来保持 Rails 环境在后台运行,以提高速度。

                  我从 Ruby 2.1.1 开始 Spring,但后来升级到 2.1.2(在 Gemfile 和 .ruby-version 中)。我的理论是 Spring 在 2.1.1 上继续运行,因此导致了这个错误。

                  【讨论】:

                  • 这在我安装 Spree 后对我有用,然后更新了我的 Ruby 版本。谢谢。
                  • 谢谢!我想这也是我的问题。
                  【解决方案14】:

                  我在使用通过 Homebrew 安装的 rbenv 时遇到了同样的问题。

                  我想不通,尝试了以上所有方法,所以我最终切换到 RVM 解决了它。

                  【讨论】:

                    【解决方案15】:

                    我在通过 rbenv 升级 Ruby 版本后遇到了这个问题。我试过上面有人提到的spring stop命令。

                    当我运行时,我收到另一条消息,建议我运行 gem pristine --all

                    警告:运行 gem pristine --all 以重新生成已安装的 gemspecs 将提高 Spring 的启动性能。

                    所以我运行了那个命令,然后事情就恢复正常了。

                    【讨论】:

                      【解决方案16】:

                      我正在运行 Windows 开发环境。

                      我刚刚在heroku\bin 条目之前的路径变量中添加了C:\Ruby22-x64\bin

                      【讨论】:

                        【解决方案17】:

                        在终于解决了困扰我数月的问题后,我松了一口气,分享了这个花絮。

                        rails new myapp
                        //Your Ruby version is 2.1.5, but your Gemfile specified 2.0.0
                        

                        我几乎尝试了所有我可以在网络上找到的解决这个问题的方法,最终我发现我的问题是因为我不小心在 Users/MyName 中安装了一个 Rails 应用程序,它正在读取宝石文件。

                        因此,在您尝试此处提供的各种其他解决方案之前,您可能需要花一点时间确认您没有做过类似的事情。

                        【讨论】:

                          【解决方案18】:

                          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
                          

                          【讨论】:

                          • 不错。 sudo apt-get install ruby-switch 不见了。
                          【解决方案19】:

                          我发现在发生此错误时重新安装 RVM 可以解决问题,因为任何其他建议都不起作用。

                          【讨论】:

                            【解决方案20】:

                            “我在使用 rbenv 时遇到了同样的问题,通过 brew 安装。

                            我想不通,尝试了以上所有方法,我最终切换到 rvm 解决了它。”

                            为了回复这篇文章,您必须确保在安装 ruby​​ 版本后运行rbenv rehash。当我遇到同样的问题时,这似乎对我有用。

                            【讨论】:

                            • 运行rbenv rehash 也为我解决了这个问题。
                            • 哇,我没想到滚动那么远才能得到我正在寻找的答案:) 我不想搬到 rvm。
                            猜你喜欢
                            • 1970-01-01
                            • 1970-01-01
                            • 1970-01-01
                            • 2016-03-04
                            • 2014-05-27
                            • 1970-01-01
                            • 1970-01-01
                            • 2016-08-17
                            相关资源
                            最近更新 更多