RAILS 5: Bundler无法找到与“actionpack”宝石兼容的版本。

14

请问有人能帮我升级Rails 4.2到Rails 5.1.4吗? 运行bundle update后会得到兼容版本错误信息:

Bundler无法找到与gem“actionpack”兼容的版本: 在Gemfile中: active_link_to(〜>1.0.0)解析为1.0.5,依赖于 actionpack

active_model_serializers (~> 0.10.6) was resolved to 0.10.7, which depends on
  actionpack (< 6, >= 4.1)

hamlit-rails (~> 0.2.0) was resolved to 0.2.0, which depends on
  actionpack (>= 4.0.1)

meta-tags (~> 2.4.1) was resolved to 2.4.1, which depends on
  actionpack (< 5.2, >= 3.2.0)

rails (~> 5.1.4) was resolved to 5.1.4, which depends on
  actionpack (= 5.1.4)

ransack (~> 1.6.6) was resolved to 1.6.6, which depends on
  actionpack (>= 3.0)

rspec-rails (~> 3.4.2) was resolved to 3.4.2, which depends on
  actionpack (< 4.3, >= 3.0)

simple_form (~> 3.5.1) was resolved to 3.5.1, which depends on
  actionpack (< 5.2, > 4)

stream_rails (>= 2.5.2, ~> 2.5) was resolved to 2.6.1, which depends on
  actionpack (>= 3.0.0)

twitter-typeahead-rails (~> 0.10.5) was resolved to 0.10.5, which depends on
  actionpack (>= 3.1)

如果您发布您的Gemfile和Gemfile.lock,这将更容易帮助调试。(如果您从私有存储库指向任何gems/code,请确保从相应字段中删除用户名/密码) - Jay Dorsey
4个回答

10

您的rspec-rails阻止了升级。Bundler输出显示了以下部分:

your rspec-rails blocks the upgrade. That bundler output shows this part:

-> 您的rspec-rails阻止了升级。Bundler输出显示了以下部分:
actionpack (< 4.3, >= 3.0)

因此,rspec-rails会阻止任何大于4.2的版本。

释放rspec-rails的约束条件〜> 3.4.2,将其更改为更宽松的版本,如〜> 3.5,然后重试。

bundle update rails rspec-rails

通常,在升级Rails时,尝试 bundle update rails 与所有具有特定版本要求的Rails的Gem或从bundler中提到的Gem一起升级。


已经尝试过 bundle update rails,但仍然出现相同的错误。感谢回复。 - djadam
1
你尝试过运行 bundle update rails rspec-rails 吗? 你尝试在 Gemfile 中将 "rspec-rails" 的 "~> 3.4.2" 移除了吗? - stwienert
是的,我已经尝试过了,也从gemfile中删除了“3.4.2”版本,但没有任何帮助。 - djadam
捆绑更新的输出是否发生了变化?您能否使用新的输出更新您的问题? - stwienert

2

删除您的 Gemfile.lock 文件,并将以下内容添加到您的 Gemfile 文件中:

source 'https://rubygems.org'

不要忘记更新其他 gem。

1
我使用以下版本的 Ruby gem 时遇到了问题:
  • gem 'rspec-rails','~> 3.4.2'
  • gem 'factory_girl_rails','~> 4.7.0'
从指定的 gem 中移除 gem 版本 后问题得到解决。
  • gem 'rspec-rails'
  • gem 'factory_girl_rails'

1

我在尝试更新到Rails 6时遇到了这个问题,以下是我的解决方法。

source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }

ruby '2.6.3'


gem 'rails', '6.0.0.rc1'
gem 'sqlite3'
gem 'activerecord-jdbcsqlite3-adapter', platforms: [:jruby]
gem 'activerecord-import'
gem 'bootsnap'
gem "rspec"


group :development do
  # Access an interactive console on exception pages or by calling 'console' anywhere in the code.
  gem 'web-console', '>= 3.3.0'
  gem 'listen', '>= 3.0.5', '< 3.2'
  # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
  gem 'spring'
  gem 'spring-watcher-listen', '~> 2.0.0'
end

platforms :rbx do
  gem 'rubysl', '~> 2.0'
  gem 'rubinius-developer_tools'
end

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接