由于Bundler版本冲突导致生成控制器失败

时间:2016-06-26 16:29:40

标签: ruby-on-rails ruby bundler gem-bundler

我正在使用Michael Hartl的 Ruby on Rails教程学习Rails https://www.railstutorial.org/book

我使用以下命令生成控制器:

rails generate controller StaticPages home help

对于版本冲突会产生以下错误:

check_version_conflict': can't activate bundler-1.12.4, already
activated bundler-1.13.0.pre.1 (Gem::LoadError)

我不知道要使用哪个Bundler版本。 Bundler的当前版本是:1.13.pre.1

以下命令由于大约五个无法自动安装的gem依赖项而继续失败,其中包括listennokigiri

bundle install --without production

我尝试手动安装从属gems,但我仍然遇到问题。

如何在生成Rails控制器时解决check_version_conflict的{​​{1}}问题?

我会接受一个答案,指示删除当前的Ruby库并从头开始安装新的开发环境。

2 个答案:

答案 0 :(得分:2)

Bundler将安装项目特定版本的宝石,这样您就不必管理全局依赖项。

实际上,如果您使用bundler安装Rails并且还使用sudo gem install rails或类似的东西安装它,那么您的计算机上将有两个版本。默认情况下,调用rails将引用全局版本。

如果您致电bundle exec rails(或bundle exec <gem_name>),它将调用特定于捆绑包的版本。

答案 1 :(得分:1)

使用Bundler解决问题的十个步骤

  1. (可选)卸载Ruby。有很多方法可以这样做,这里有一个:https://superuser.com/questions/194051/how-to-completely-remove-ruby-ruby-gems-on-mac-os-x-10-6-4
  2. (可选)使用rbenv安装Ruby。按照此处的说明操作:https://github.com/rbenv/rbenv
  3. 创建一个将存放未来Rails应用程序的repo目录
  4. 从命令行:

    mkdir repo
    cd repo
    
    1. 安装Bundler并为目录
    2. 创建Gemfile

      从命令行:

      gem install bundler
      bundle init
      
      1. 使用您的编辑器打开repo/Gemfile,并将其配置为指示Bundler安装哪个版本的Rails
      2. repo/Gemfile

        source "https://rubygems.org"                                
        
        gem "rails", "4.2.6"
        
        1. 通过Bundler安装Rails
        2. 从命令行:

          bundle install
          
          1. 使用Bundler创建一个新的Rails应用程序,并在其中创建cd
          2. 从命令行:

            bundle exec rails new whatevs
            cd whatevs
            
            1. 默认情况下,您的Rails应用会有一个Gemfile。打开它并添加您希望在应用中使用的宝石。
            2. repo/whatevs/Gemfile

              gem 'nokogiri', '1.6.8'
              
              1. repo/whatevs/目录,通过Bundler
              2. 安装应用程序的Gems

                从命令行:

                bundle install
                
                1. repo/whatevs/目录生成控制器
                2. 从命令行:

                  bundle exec rails generate controller static_pages home help