首页 文章

Bundler找不到gem“bundler”的兼容版本:

提问于
浏览 1396
11

在这里完成Ruby和Rails的新人...过去曾尝试过一些教程,但那是关于它的 . 我正在尝试遵循“Ruby on Rails 3 Tutorial”一书,并找到了一个障碍,我在这里和谷歌搜索后找不到任何帮助 .

我还没有做过任何事情;只要:

rails new first_app

然后将Gemfile sqlite3更改为

gem 'sqlite3-ruby', '1.2.5', :require => 'sqlite3'

当我运行'bundle install'时,我得到以下内容:

Fetching gem metadata from http://rubygems.org/.........
Bundler could not find compatible versions for gem "bundler":
  In Gemfile:
    rails (= 3.0.1) ruby depends on
      bundler (~> 1.0.0) ruby

  Current Bundler version:
    bundler (1.1.3)

This Gemfile requires a different version of Bundler.
Perhaps you need to update Bundler by running `gem install bundler`?

我试过通过卸载捆绑包

gem uninstall bundler -v 1.1.3

然后通过安装bundler v1.0.0

gem install bundler -v 1.0.0

但它似乎让我捆绑1.1.2 ..

我只是觉得自己已经走到了尽头,无法找到更多关于如何解决这个问题的信息 .

任何帮助都将受到极大的赞赏和奖励大量的培根......

更新更新更新

我无法让bundler v 1.1.2卸载 . 我终于通过这样做卸载了所有的宝石:

sudo gem list | cut -d" " -f1 > gem_list.txt  
cat gem_list.txt | xargs sudo gem uninstall -aIx  
cat gem_list.txt | xargs sudo gem install

然后重新安装...这使我可以进行'捆绑安装'并开始运行..谢谢大家的帮助!

5 回答

  • 6

    Bundler是rails的依赖gem,因此只能在 gemfile.lock 而不是 gemfile 中看到它 .

    对于特定的轨道版本,只有一系列捆绑器宝石兼容 . 我也遇到了这个错误,我尝试卸载我不需要的那个版本的bundler gem . 我也尝试使用 bundle_x.x.x_install 强行安装,但是当事情没有正确的方式时,这就是事情对我有用的方式 .

  • 5

    也许您的机器上安装了bundler 1.1.2 AND 1.1.3(可能还有更多版本)

    使用

    gem list bundler
    

    检查您安装的捆绑器的版本 .

    然后删除你不想要的那些

    gem uninstall bundler -v VERSION_NUMBER
    
  • 3

    首先验证您的版本,以确保它们是最新的:

    $ ruby -v
    ruby 1.9.3p125 (2012-02-16 revision 34643) [x86_64-linux]
    
    $ rails -v          
    Rails 3.2.2
    
    $ gem list bundler
    *** LOCAL GEMS ***
    bundler (1.1.3)
    

    如果您需要更新ruby,可以从ruby-lang.org下载或使用ruby-build等工具 . 如果您有任何版本的Ruby 1.9.3现在都可以 .

    要更新所有宝石:

    gem update --system
    gem update
    

    宝石可能会在几个不同的地方安装宝石,这些宝石会相互干扰 . 有系统宝石(通常由root或使用sudo安装)和您的个人用户宝石 . 我最喜欢的方法是使用一个名为rb-evn的简单工具 . 一个相关的工具是rvm . 要么没事 .

    对于您的第一个教程,您可以跳过Gemfile中的版本号:

    - gem 'sqlite3-ruby', '1.2.5', :require => 'sqlite3'
    + gem 'sqlite3-ruby', :require => 'sqlite3'
    

    Bundler将以正确的方式排序所有内容 . 最终,如果您正在与其他开发人员协调或构建 生产环境 系统,则需要指定版本号 .

    随意在这里提问,我将添加到这个答案 .

  • 2

    您可以使用最新版本的Rails 3.0(3.0.12) . 它支持最新的捆绑包,并没有从根本上与3.0.1不同

  • -1

    这是因为gems也安装在全局gemset中,您可以使用以下命令卸载它:

    rvm @global do gem uninstall bundler
    

    但您也可以使用其他版本的bundler:

    gem install bundler -v '~>1.0.0'
    bundle _1.0.0_ install
    

    将1.0.0替换为已安装的版本(如果是其他)

相关问题