Bundler无法找到gem的兼容版本,更新了Rails app

时间:2012-01-13 23:37:11

标签: ruby-on-rails ruby ruby-1.9.3 ruby-on-rails-3.2

创建全新的rails应用程序之后在官方rails博客post之后,尝试将应用程序转换为rails 3.2.0.rc2会产生以下内容

Updated Gemfile to depend on rails ~> 3.2.0.rc2
    gem 'rails', '~>3.2.0.rc2'
Updated Gemfile to depend on sass-rails ~> 3.2.3
    gem 'sass-rails',   '~> 3.2.3'

$ bundle install
Fetching source index for http://rubygems.org/
Bundler could not find compatible versions for gem "activesupport":
  In snapshot (Gemfile.lock):
    activesupport (3.1.1)

  In Gemfile:
    rails (~> 3.2.0.rc2) ruby depends on
      activesupport (= 3.2.0.rc2) ruby

Running `bundle update` will rebuild your snapshot from scratch, using 
only the gems in your Gemfile, which may resolve the conflict.

$bundle update
Fetching source index for http://rubygems.org/
Bundler could not find compatible versions for gem "railties":
  In Gemfile:
    coffee-rails (~> 3.1.1) ruby depends on
      railties (~> 3.1.0) ruby

    rails (~> 3.2.0.rc2) ruby depends on
      railties (3.2.0.rc2)

究竟是什么问题?

系统规格:

Mac OS 10.7.2,Xcode 4.2.1,rvm 1.10.1使用ruby 1.9.3p0(2011-10-30修订版33570)[x86_64-darwin11.2.0]

4 个答案:

答案 0 :(得分:61)

我通过删除锁rm Gemfile.lock并再次运行bundle install来解决此问题:

$ rm Gemfile.lock
$ bundle install
Using rake (0.9.2.2) 
Using i18n (0.6.0) 
Using multi_json (1.0.4) 
Using activesupport (3.2.0.rc2) 
Using builder (3.0.0) 
Using activemodel (3.2.0.rc2) 
Using erubis (2.7.0) 
Using journey (1.0.0) 
Using rack (1.4.0) 
Using rack-cache (1.1) 
Using rack-test (0.6.1) 
Using hike (1.2.1) 
Using tilt (1.3.3) 
Using sprockets (2.1.2) 
Using actionpack (3.2.0.rc2) 
Using mime-types (1.17.2) 
Using polyglot (0.3.3) 
Using treetop (1.4.10) 
Using mail (2.3.0) 
Using actionmailer (3.2.0.rc2) 
Using arel (3.0.0) 
Using tzinfo (0.3.31) 
Using activerecord (3.2.0.rc2) 
Using activeresource (3.2.0.rc2) 
Using bundler (1.0.21) 
Using coffee-script-source (1.2.0) 
Using execjs (1.2.13) 
Using coffee-script (2.2.0) 
Using rack-ssl (1.3.2) 
Using json (1.6.4) 
Using rdoc (3.12) 
Using thor (0.14.6) 
Using railties (3.2.0.rc2) 
Using coffee-rails (3.2.1) 
Using jquery-rails (2.0.0) 
Using rails (3.2.0.rc2) 
Using sass (3.1.12) 
Using sass-rails (3.2.3) 
Using sqlite3 (1.3.5) 
Using uglifier (1.2.2) 
Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.

这是解决问题的一种非常强力的方法。如果这是已建立的项目,则在删除Gemfile.lock后可能会遇到其他问题,因为依赖关系版本不再被锁定。但是,如果这是一个新项目,那么采用这种方法就不会遇到问题。

答案 1 :(得分:2)

除了sass-rails之外,还需要提高您依赖的coffee-rails版本(3.2.1应该这样做)

答案 2 :(得分:0)

这样:da gemfile中的gem 'activeadmin', github: 'gregbell/active_admin'。对rails 4的主动管理支持合并到主分支Active admin install with Rails 4

答案 3 :(得分:0)

如果您的Bundler版本与Gemfile.lock的最后一行中的BUNDLED WITH不同,则可能无法找到gem GEMNAME'的兼容版本。只有在你的Gemfile中添加新的gem之后。