解耦 Gemfile 包错误

Decoupling Gemfile bundle errors

给定 gem 文件:

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 取决于 jquery-rails大约 2.1.3。

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

基本上,您的 gem 文件中存在依赖性错误,似乎 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 , 所以 any version) requires ejs in version 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 获得最新版本,但我建议不要使用开发版本(可能会带来更多麻烦而不是好处)

rubygem 似乎已过时,github 存储库声明它适用于 rails 4

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

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

jquery-rails (~> 2.1.3)表示它依赖于2.1.32.2.0之间的所有jquery-rails版本。

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

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