解耦Gemfile包错误

时间:2015-01-09 16:06:41

标签: ruby-on-rails bundler

给出一个gemfile:

source 'https://rubygems.org'

gem 'rails', '4.1.1'

group :development, :test do
  gem 'railroady'
  gem 'sqlite3'
  gem 'jasmine'
  # For linux support
  gem 'therubyracer'
end

group :production do
  gem 'pg'
  gem 'thin'
end

gem 'sass-rails'
# gem 'coffee-rails'
gem 'uglifier', '>= 1.0.3'

gem 'colorize'
gem 'jquery-ui-rails'
gem 'jquery-rails'
gem 'rails-backbone'
# gem 'backbone-on-rails'
gem 'bootstrap-sass'
gem 'requirejs-rails', git: 'git://github.com/jwhitley/requirejs-rails.git'
gem 'ejs'
gem 'devise'
gem 'better_errors', '>= 0.2.0', :group => :development
gem 'binding_of_caller', '>= 0.6.8', :group => :development
gem 'd3_rails'
gem 'font-awesome-sass-rails'

# for a better way of looking at the rake routes by calling rake color_routes in the console
gem 'color_routes'
# lets us know which user is logged in, and store in a global variable gon{}
gem 'gon'
#browser detection
gem 'browser'

# FOR EASY TRANISTION TO Rails 4
gem 'protected_attributes'
gem 'rails-observers'
gem 'actionpack-page_caching'
gem 'actionpack-action_caching'

并且在运行bundle时,收到以下错误:

Bundler could not find compatible versions for gem "jquery-rails":
  In Gemfile:
    rails-backbone (>= 0) ruby depends on
      jquery-rails (~> 2.1.3) ruby

    jquery-rails (3.1.2)

Bundler could not find compatible versions for gem "ejs":
  In Gemfile:
    rails-backbone (>= 0) ruby depends on
      ejs (~> 1.0.0) ruby

    ejs (1.1.1)

Bundler could not find compatible versions for gem "rails":
  In Gemfile:
    rails-backbone (>= 0) ruby depends on
      rails (~> 3.1.0.beta1) ruby

    rails (4.1.1)

错误没有意义。用jquery-rails取第一部分,我得知它是一个大于或等于0的版本的另一个gem rails-backbone取决于2.1.3左右的jquery-rails

ruby版本后的含义是什么? 什么是`jquery-rails(3.1.2)是什么意思?

3 个答案:

答案 0 :(得分:1)

基本上,你的gemfile中存在依赖性错误,似乎rails-backbone导致了大部分错误,考虑删除它,因为最新版本适用于rails 3.1 - 它已经很长时间没有更新

以下是有关gem的信息:https://rubygems.org/gems/rails-backbone

Bundler could not find compatible versions for gem "ejs":
  In Gemfile:
    rails-backbone (>= 0) ruby depends on
      ejs (~> 1.0.0) ruby

    ejs (1.1.1)

此错误字面意思是您使用的是ejs版本1.1.1(可能是某些其他gem的依赖项),但rails-backbone(版本大于或等于0,因此任何版本)需要ejs在版本1.0。*

你可以使用git中的rails-backbone

gem 'rails-backbone', git: 'https://github.com/codebrew/backbone-rails.git', tag: 'v1.1.2'

版本1.1.2取决于任何版本的jquery-rails和mocha,因此它不应该导致任何问题。使用没有标签的git将从master获得最新版本,但我建议不要使用开发版本(可能会造成更多麻烦而不是好处)

答案 1 :(得分:0)

ruby​​gem似乎过时了,github存储库声明它适用于rails 4

作为一种解决方法,直接从github获取gem:

gem 'rails-backbone', :git => 'https://github.com/codebrew/backbone-rails.git'

答案 2 :(得分:0)

jquery-rails (~> 2.1.3)表示它取决于jquery-rails2.1.3之间的所有2.2.0版本。

jquery-rails (3.1.2)已安装在应用中;可以通过查看Gemfile.lock内容来验证它。

尝试bundle update;它会尝试更新没有指定特定版本的所有gem版本,并且可能成功解决依赖冲突。