You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法将Rails 5.2.3升级至6:bundle install遇版本兼容错误

问题描述

我已经把Gemfile更新为Rails 6版本,但每次执行bundle install时都会出现以下错误:

Bundler could not find compatible versions for gem "activerecord":
In Gemfile:
default_value_for was resolved to 3.1.0, which depends on
activerecord (>= 3.2.0, < 6.0)

rails (~> 6.0, >= 6.0.4) was resolved to 6.1.0.rc1, which depends on
  activerecord (= 6.1.0.rc1)

以下是我的Gemfile内容:

source 'https://gems.ruby-china.com'

gem 'rails', '~> 6.0', '>= 6.0.4'

gem 'shirinji-rails'

gem 'rack-cors', :require => 'rack/cors'
gem 'olive_branch'

gem 'health_check'

#gem 'auto-session-timeout'

gem 'pg'
gem 'redis'
gem 'oj'

gem 'virtus'
gem 'stringex', require: 'stringex_lite'
gem 'attribute_normalizer'
gem 'default_value_for'
gem 'kaminari'
gem 'pagy', '< 4.0'

# https://iplocate.docs.apiary.io/#introduction/code-samples
gem 'iplocate', '~> 1.0', '>= 1.0.1'
# https://github.com/alexreisner/geocoder
gem 'geocoder'

gem 'sidekiq'
gem 'sidekiq-cron'
gem 'sidekiq-failures'
gem 'sidekiq_alive'

gem 'rdiscount'
gem 'jbuilder', '~> 2.0'

gem 'rack-attack'

# FIXME: deprecated
gem 'inky-rb', require: 'inky'
gem 'premailer-rails'
# /deprecated

gem 'mimemagic'
gem 'jwt'

gem "slack-notifier"

gem 'linkedin-oauth2'
gem 'cloudinary'
gem 'elasticsearch'
gem 'aws-sdk-s3', '~> 1'

gem 'pusher'

gem 'addressable'

gem 'active_model_serializers' # TODO: replace by jbuilder

gem 'rubocop'

## TODO: deprecate the 2 first ones in favour of typhoeus
gem 'rest-client', '~> 2.0.1'
gem 'faraday'
gem 'typhoeus'
## /TODO

## TODO: get rid of devise
gem 'devise'
gem 'devise-bootstrap-views'
gem 'omniauth'
## /TODO

## TODO: remove SSR
gem 'bootstrap-sass', '~> 3.4.1'
gem 'autoprefixer-rails'
gem 'sass-rails'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails'
gem 'jquery-rails'
gem 'clipboard-rails'
gem 'turbolinks'
gem 'momentjs-rails'
gem 'rails_bootstrap_sortable'
gem 'bootstrap-tagsinput-rails'
gem 'haml'
gem 'tinymce-rails'
gem "font-awesome-rails"
gem 'lazyload-rails'
gem 'bootstrap-datepicker-rails'
gem 'formvalidation-rails'
gem 'nprogress-rails'
gem 'kaminari-bootstrap'
gem 'simple_form'
## /TODO

gem 'has_scope' # TODO: remove

## TODO: remove when every image is migrated
gem 'carrierwave-aws'
gem 'carrierwave', '~> 1.0'
gem 'mini_magick'
## /TODO

gem 'pg_search' # TODO: use an index instead
gem 'ruby-progressbar'
gem 'staccato'

# gem for payment processing
gem 'paypal-checkout-sdk'
gem 'pingpp'
gem 'rqrcode'

gem 'faker' # TODO: remove from seeds and move the gem to test

# Monitoring Tools
gem "sentry-ruby"
gem "sentry-rails"
gem "sentry-sidekiq"

group :development do
  gem "spring"
  gem 'thin'
end

group :development, :test do
  # gem 'parallel_tests'
  gem 'rspec-rails', '>= 3.7.2'
  gem 'rspec-retry', '~> 0.6.2'
  gem 'factory_girl_rails'
  gem 'timecop'
end

group :test do
  gem 'database_cleaner'
  gem 'shoulda-matchers', require: false
end

group :production do
  gem 'puma', '< 6'
end
解决方案

错误原因很明确:当前使用的default_value_for版本(3.1.0)仅兼容低于6.0版本的activerecord,但你安装的Rails 6.1.0.rc1依赖的是activerecord 6.1.0.rc1,版本冲突导致bundle安装失败。

解决步骤:

  • 更新default_value_for到兼容Rails 6的版本
    修改Gemfile中default_value_for的配置行,指定兼容Rails 6.x的版本:

    gem 'default_value_for', '>= 3.4.0'
    

    3.4.0及以上版本的default_value_for已经支持Rails 6.x及更高版本的activerecord。

  • 清理并重新安装依赖
    执行以下命令确保依赖更新生效:

    bundle update default_value_for
    bundle install
    
  • 备用方案
    如果更新后仍存在兼容性问题,可以临时注释掉default_value_for(若项目中暂时不依赖该功能),先完成Rails升级,再逐步适配该gem的新版本。

内容的提问来源于stack exchange,提问作者NooBskie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 20:35:08