为什么在未指定版本时捆绑程序需要一个非常旧的 gem 版本?
Why is bundler requiring an extremely old version of a gem when version not specified?
我有一个如下所示的 Gemfile:
gem 'google-api-client', :require => 'google/api_client'
gem 'my_baseimage', '0.0.3', :git => 'https://github.com/xxx/BaseImage.git'
我有一个基础 gem,它需要一系列跨项目的通用 gem。
但是,当我 运行 bundle install
时,我看到这样的错误:
In Gemfile:
activerecord (>= 0) ruby depends on
activemodel (= 4.1.11) ruby depends on
activesupport (= 4.1.11) ruby
activerecord (>= 0) ruby depends on
activemodel (= 4.1.11) ruby depends on
activesupport (= 4.1.11) ruby
google-api-client (>= 0) ruby depends on
activesupport (~> 3.2) ruby
Bundler could not find compatible versions for gem "rack":
In Gemfile:
rack-contrib (= 1.1.0) ruby depends on
rack (>= 0.9.1) ruby
sinatra (>= 0) ruby depends on
rack (~> 1.4) ruby
google-api-client (>= 0) ruby depends on
rack (= 1.2.0) ruby
rack (>= 0) ruby
google-api-client
不需要机架 1.2,因为 version 0.1,而且 my_baseimage
需要 0.7.1。当我 运行 一个 gem dependency -R
时,我看到这个:
google-api-client-0.7.1 (addressable (>= 2.3.2))
google-api-client-0.7.1 (autoparse (>= 0.3.3))
google-api-client-0.7.1 (extlib (>= 0.9.15))
google-api-client-0.7.1 (faraday (>= 0.9.0))
Gem google-api-client-0.7.1
google-api-client-0.7.1 (jwt (>= 0.1.5))
google-api-client-0.7.1 (launchy (>= 2.1.1))
google-api-client-0.7.1 (multi_json (>= 1.0.0))
google-api-client-0.7.1 (rake (>= 0.9.0, development))
google-api-client-0.7.1 (rake (>= 0.9.0, development))
google-api-client-0.7.1 (retriable (>= 1.4))
google-api-client-0.7.1 (rspec (>= 2.11.0, development))
google-api-client-0.7.1 (signet (>= 0.5.0))
google-api-client-0.7.1 (uuidtools (>= 2.1.0))
我可以通过在我的 Gemfile 中指定 0.7.1 来解决这个问题,如下所示:
gem 'google-api-client', '0.7.1', :require => 'google/api_client'
gem 'my_baseimage', '0.0.3', :git => 'https://github.com/xxx/BaseImage.git'
但是,我希望在我的项目特定 gem 文件中我不必指定 gem 版本,他们会按原样从 my_baseimage
中获取它们.
当依赖关系图指定我想要的 (0.7.1) 和 my_baseimage
也指定我要的那个(0.7.1)?
Bundler 使用 rubygems,当没有给定特定版本时,默认为标记为 'stable' 的最后一个版本,如果不维护该标签,则可能意味着构建被严重弃用。
我有一个如下所示的 Gemfile:
gem 'google-api-client', :require => 'google/api_client'
gem 'my_baseimage', '0.0.3', :git => 'https://github.com/xxx/BaseImage.git'
我有一个基础 gem,它需要一系列跨项目的通用 gem。
但是,当我 运行 bundle install
时,我看到这样的错误:
In Gemfile:
activerecord (>= 0) ruby depends on
activemodel (= 4.1.11) ruby depends on
activesupport (= 4.1.11) ruby
activerecord (>= 0) ruby depends on
activemodel (= 4.1.11) ruby depends on
activesupport (= 4.1.11) ruby
google-api-client (>= 0) ruby depends on
activesupport (~> 3.2) ruby
Bundler could not find compatible versions for gem "rack":
In Gemfile:
rack-contrib (= 1.1.0) ruby depends on
rack (>= 0.9.1) ruby
sinatra (>= 0) ruby depends on
rack (~> 1.4) ruby
google-api-client (>= 0) ruby depends on
rack (= 1.2.0) ruby
rack (>= 0) ruby
google-api-client
不需要机架 1.2,因为 version 0.1,而且 my_baseimage
需要 0.7.1。当我 运行 一个 gem dependency -R
时,我看到这个:
google-api-client-0.7.1 (addressable (>= 2.3.2))
google-api-client-0.7.1 (autoparse (>= 0.3.3))
google-api-client-0.7.1 (extlib (>= 0.9.15))
google-api-client-0.7.1 (faraday (>= 0.9.0))
Gem google-api-client-0.7.1
google-api-client-0.7.1 (jwt (>= 0.1.5))
google-api-client-0.7.1 (launchy (>= 2.1.1))
google-api-client-0.7.1 (multi_json (>= 1.0.0))
google-api-client-0.7.1 (rake (>= 0.9.0, development))
google-api-client-0.7.1 (rake (>= 0.9.0, development))
google-api-client-0.7.1 (retriable (>= 1.4))
google-api-client-0.7.1 (rspec (>= 2.11.0, development))
google-api-client-0.7.1 (signet (>= 0.5.0))
google-api-client-0.7.1 (uuidtools (>= 2.1.0))
我可以通过在我的 Gemfile 中指定 0.7.1 来解决这个问题,如下所示:
gem 'google-api-client', '0.7.1', :require => 'google/api_client'
gem 'my_baseimage', '0.0.3', :git => 'https://github.com/xxx/BaseImage.git'
但是,我希望在我的项目特定 gem 文件中我不必指定 gem 版本,他们会按原样从 my_baseimage
中获取它们.
当依赖关系图指定我想要的 (0.7.1) 和 my_baseimage
也指定我要的那个(0.7.1)?
Bundler 使用 rubygems,当没有给定特定版本时,默认为标记为 'stable' 的最后一个版本,如果不维护该标签,则可能意味着构建被严重弃用。