如何修复捆绑器 "can't find version" 升级 Nokogiri

How to fix bundler "can't find version" upgrading Nokogiri

我正在尝试将 Nokogiri 升级到 1.7 版:

gem 'nokogiri', '~> 1.7'

但是当我 运行:

bundle update --source nokogiri

我得到:

Fetching gem metadata from https://rubygems.org/...........
Fetching version metadata from https://rubygems.org/...
Fetching dependency metadata from https://rubygems.org/..
Resolving dependencies.............
Bundler could not find compatible versions for gem "nokogiri":

这是在我的 Gemfile 中:

    nokogiri (~> 1.7)

    activemerchant (~> 1.58.0) was resolved to 1.58.0, which depends on
      nokogiri (~> 1.4)

    activemerchant (~> 1.58.0) was resolved to 1.58.0, which depends on
      nokogiri (~> 1.4)

    capybara was resolved to 2.7.0, which depends on
      nokogiri (>= 1.3.3)

    cucumber-rails was resolved to 1.4.3, which depends on
      nokogiri (~> 1.5)

    haml-rails was resolved to 0.9.0, which depends on
      html2haml (>= 1.0.1) was resolved to 2.0.0, which depends on
        nokogiri (~> 1.6.0)

    haml-rails was resolved to 0.9.0, which depends on
      html2haml (>= 1.0.1) was resolved to 2.0.0, which depends on
        nokogiri (~> 1.6.0)

    rails (>= 4.2.6, ~> 4.2) was resolved to 4.2.6, which depends on
      actionmailer (= 4.2.6) was resolved to 4.2.6, which depends on
        actionview (= 4.2.6) was resolved to 4.2.6, which depends on
          rails-html-sanitizer (>= 1.0.2, ~> 1.0) was resolved to 1.0.3, which depends on
            loofah (~> 2.0) was resolved to 2.0.3, which depends on
              nokogiri (>= 1.5.9)

    roo (~> 2.4.0) was resolved to 2.4.0, which depends on
      nokogiri (~> 1)

    roo-xls was resolved to 1.0.0, which depends on
      nokogiri

    capybara was resolved to 2.7.0, which depends on
      xpath (~> 2.0) was resolved to 2.0.0, which depends on
        nokogiri (~> 1.3)

有谁知道为什么找不到它?我在 rubygems.org 和 github 上看到当前版本是 1.7.1。我需要指定 github 来源吗?

我认为其他 gems 依赖于 Nokogiri,所以 试试 bundle update.

bundle update 将解析依赖关系树并尝试安装满足所有其他 gems 依赖关系的版本。

问题出在这里:

haml-rails was resolved to 0.9.0, which depends on
  html2haml (>= 1.0.1) was resolved to 2.0.0, which depends on
    nokogiri (~> 1.6.0)

如您所见,html2haml依赖于nokogiri (~> 1.6.0),即而非1.7。您要么需要更新 html2haml(因此它的依赖性变为 nokogiri (~> 1.6)),要么使用 nokogiri, ~> 1.6.

您可以尝试删除 Gemfile.lock 文件并再次 运行 bundle install,但我只建议您在尚未投入生产时执行此操作。