gpt4 book ai didi

ruby-on-rails - 当 gemspec 声明开放约束时,为什么 bundler 坚持使用确切的 gem 版本号?

转载 作者:太空宇宙 更新时间:2023-11-03 16:24:40 25 4
gpt4 key购买 nike

我正在为 Ruby gem 做贡献 koudoku并试图让 Travis CI 工作。

gem 是几天前使用 Travis 设置的,但所有构建都失败并显示此错误消息 (example):

Bundler could not find compatible versions for gem "rack":
In Gemfile:
rspec-rails (~> 2.14.0) ruby depends on
actionpack (>= 3.0) ruby depends on
rack (~> 1.2.1) ruby
capybara (>= 0) ruby depends on
rack (1.0.0)

gemspec 中有问题的行是:

s.add_development_dependency "rspec-rails", "~> 2.14.0"
s.add_development_dependency 'capybara'

我 fork 了 gem 并更改了第二行,因此它需要 capybara 版本 >= 2.4.0,但是当我在 Travis 上运行自己的构建时,我得到了 exact same error .

最让我困惑的是,当你查看 Capybara's own gemspec 时你可以看到它没有说明它完全依赖于机架版本 1.0.0real dependency是机架版本 >= 1.0.0

为什么 bundler 坚持使用 1.0.0 而 Capybara 本身不需要这个?我怎样才能让 Travis 运行测试?

最佳答案

我必须承认这不是 Travis 特有的问题。

⌚ 17:10:45 ▷ /tmp/koudoku ▷ ⭠ master ▷ bundle
Fetching gem metadata from http://rubygems.org/.......
Resolving dependencies........
Bundler could not find compatible versions for gem "rack":
In Gemfile:
rspec-rails (~> 2.14.0) ruby depends on
actionpack (>= 3.0) ruby depends on
rack (~> 1.2.1) ruby

capybara (>= 0) ruby depends on
rack (1.0.0)

这就是我在 git clone 上运行 koudoku 并在新下载的源上运行 bundle 时发生的事情。这发生在 ruby 2.1.5 上,但 Travis 在 1.9.3 上遇到了同样的问题。

看起来您已经以某种方式调整了您的 gem 以使其正常工作,而从头开始的过程被打破了。我不知道为什么 rack >= 1.0.0 不适用于 1.2.1,但我建议您清理系统(使用 创建新的 gemset rvm 或类似的)并尝试让事情在本地工作。

很抱歉将此作为答案发布,但它太长了,无法容纳“评论”字段。

希望对您有所帮助。

版本:

▷ rvm --version
rvm 1.26.2 (master) by Wayne E. Seguin <wayneeseguin@gmail.com>, Michal Papis
▷ gem --version
2.4.4
▷ bundle --version
Bundler version 1.7.6

UPD 由于未知原因,将此行添加到 gemspec 会导致无限的 Resolving dependencies 点打印:

  s.add_development_dependency "rack", "~> 1.2.1"

关于ruby-on-rails - 当 gemspec 声明开放约束时,为什么 bundler 坚持使用确切的 gem 版本号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27253373/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com