首页 > 解决方案 > Bundler 找不到 gem "faraday" 的兼容版本:Upgrading rails from 4.2 to 5.2.3

问题描述

我正在尝试将我的 rails 4.2 项目升级到 5.2.3。

执行 bundle update rails 时,出现以下错误。

Bundler 找不到 gem "faraday" 的兼容版本:在 Gemfile: faraday (~> 0.11.0)

faraday_middleware was resolved to 0.13.1, which depends on
  faraday (>= 0.7.4, < 1.0)

oauth2 (~> 1.3.1) was resolved to 1.3.1, which depends on
  faraday (>= 0.8, < 0.12)

sentry-raven was resolved to 2.9.0, which depends on
  faraday (>= 0.7.6, < 1.0)

twilio-ruby was resolved to 5.23.1, which depends on
  faraday (~> 0.9)

Bundler 找不到 gem "railties" 的兼容版本:在 Gemfile 中:coffee-rails (~> 4.1.0) 被解析为 4.1.0,这取决于 railties (>= 4.0.0, < 5.0)

devise was resolved to 4.6.2, which depends on
  railties (>= 4.1.0, < 6.0)

factory_bot_rails was resolved to 5.0.2, which depends on
  railties (>= 4.2.0)

rails (= 5.2.3) was resolved to 5.2.3, which depends on
  railties (= 5.2.3)

rails-i18n was resolved to 5.1.3, which depends on
  railties (>= 5.0, < 6)

rspec-rails (~> 3.5, >= 3.5.2) was resolved to 3.8.2, which depends on
  railties (>= 3.0)

sass-rails (~> 5.0) was resolved to 5.0.7, which depends on
  railties (>= 4.0.0, < 6)

web-console (~> 2.0) was resolved to 2.3.0, which depends on
  railties (>= 4.0)

根据参考资料,我删除了 Gemfile.lock 并运行了 bundle install 但发生了同样的错误。

似乎有两个 gem 与当前的库不兼容。您对如何安全地将 rails 项目升级到 5.2.3 有什么建议吗?

标签: ruby-on-railsruby

解决方案


如我所见,您在 gem 依赖项方面有 2 个问题:

1)您使用法拉第(~> 0.11.0),但 twilio-ruby 5.23.1 需要法拉第(~> 0.9)。所以你需要将你的法拉第版本降级到 (~> 0.9)

2)您使用依赖于railties(> = 4.0.0,< 5.0)的咖啡轨(〜> 4.1.0)。但是 rails 5.2.3 使用 railties (5.2.3)。所以你需要将你的咖啡导轨升级到 (~> 5.0.0)

换句话说,在 Gemfile 您需要更改行:

faraday (~> 0.11.0)
coffee-rails (~> 4.1.0)

至:

faraday (~> 0.9)
coffee-rails (~> 5.0.0)

推荐阅读