无法将 Rails 从 4.20 升级到 5.2.3
Failed to upgrade Rails from 4.20 to 5.2.3
我正在尝试将 rails 4.2 应用程序升级到 5.2.3。
我的系统是 MacOS 10.14.6 Mojave。捆绑器版本 2.0.2
这是我做完后的错误 bundle update
:
Bundler could not find compatible versions for gem "actionpack":
In Gemfile:
rails (~> 5.2.3) was resolved to 5.2.4.rc1, which depends on
actionpack (= 5.2.4.rc1)
simple_form was resolved to 5.0.1, which depends on
actionpack (>= 5.0)
rails (~> 5.2.3) was resolved to 5.2.4.rc1, which depends on
sprockets-rails (>= 2.0.0) was resolved to 3.2.1, which depends on
actionpack (>= 4.0)
Bundler could not find compatible versions for gem "activemodel":
In Gemfile:
paperclip was resolved to 6.1.0, which depends on
activemodel (>= 4.2.0)
rails (~> 5.2.3) was resolved to 5.2.4.rc1, which depends on
activemodel (= 5.2.4.rc1)
simple_form was resolved to 5.0.1, which depends on
activemodel (>= 5.0)
Bundler could not find compatible versions for gem "activerecord":
In Gemfile:
acts-as-taggable-on was resolved to 6.5.0, which depends on
activerecord (< 6.1, >= 5.0)
deep_cloneable was resolved to 3.0.0, which depends on
activerecord (< 7, >= 3.1.0)
oink was resolved to 0.10.1, which depends on
activerecord
rails (~> 5.2.3) was resolved to 5.2.4.rc1, which depends on
activerecord (= 5.2.4.rc1)
Bundler could not find compatible versions for gem "activesupport":
In Gemfile:
jbuilder (~> 2.0) was resolved to 2.9.1, which depends on
activesupport (>= 4.2.0)
activeadmin was resolved to 2.5.0, which depends on
kaminari (>= 1.0.1, ~> 1.0) was resolved to 1.1.1, which depends on
activesupport (>= 4.1.0)
rails (~> 5.2.3) was resolved to 5.2.4.rc1, which depends on
activesupport (= 5.2.4.rc1)
rails (~> 5.2.3) was resolved to 5.2.4.rc1, which depends on
sprockets-rails (>= 2.0.0) was resolved to 3.2.1, which depends on
activesupport (>= 4.0)
Bundler could not find compatible versions for gem "railties":
In Gemfile:
activeadmin was resolved to 2.5.0, which depends on
railties (< 6.1, >= 5.2)
coffee-rails (~> 4.1.0) was resolved to 4.1.0, which depends on
railties (< 5.0, >= 4.0.0)
devise was resolved to 4.2.1, which depends on
railties (< 5.1, >= 4.1.0)
activeadmin was resolved to 2.5.0, which depends on
jquery-rails (~> 4.2) was resolved to 4.3.5, which depends on
railties (>= 4.2.0)
rails (~> 5.2.3) was resolved to 5.2.4.rc1, which depends on
railties (= 5.2.4.rc1)
这是我只更新时得到的 rails bundle update rails
:
Bundler could not find compatible versions for gem "activerecord":
In Gemfile:
acts-as-taggable-on was resolved to 5.0.0, which depends on
activerecord (>= 4.2.8)
deep_cloneable was resolved to 3.0.0, which depends on
activerecord (< 7, >= 3.1.0)
oink was resolved to 0.10.1, which depends on
activerecord
rails (~> 5.2.3) was resolved to 5.2.4.rc1, which depends on
activerecord (= 5.2.4.rc1)
activeadmin was resolved to 1.4.3, which depends on
ransack (>= 1.8.7) was resolved to 1.8.10, which depends on
activerecord (< 5.2, >= 3.0)
这是我的 Gemfile:
source 'https://rubygems.org'
ruby '2.5.1'
gem 'rails', '~> 5.2.3'
gem 'mysql2', '<= 0.5.1'
gem 'mini_racer'
gem 'sass-rails'
gem 'coffee-rails', '~> 4.1.0'
gem 'uglifier', '>= 1.3.0'
gem 'jquery-rails'
gem 'jbuilder', '~> 2.0'
gem 'jbuilder_cache_multi'
# gem 'sidekiq'
# gem 'sinatra', require: false # Required by sidekiq/web
gem 'savon'
gem 'soap4r'
gem 'kaminari'
# gem 'actionpack-action_caching'
gem 'acts-as-taggable-on'
gem 'rest-client'
gem 'simple_form'
# gem 'responders', '~> 2.0'
gem 'paperclip'
gem 'whenever', require: false
gem 'typhoeus'
gem 'zip-zip', require: false
gem 'http'
gem 'activeadmin'
gem 'devise'
gem 'redis-rails'
gem 'crack'
gem 'trollop'
gem 'oink'
# gem 'backport_new_renderer'
gem 'deep_cloneable'
gem 'gsl'
gem 'kmeans-clusterer'
gem 'scalpel'
gem 'pragmatic_segmenter'
gem 'memory_profiler'
gem 'parallel'
gem 'sqlite3', '~> 1.3', '>= 1.3.11'
gem 'sprockets-rails', :require => 'sprockets/railtie'
gem 'digest', git: 'git@github.com:ruby/digest.git'
gem 'httparty'
gem 'mail'
gem 'net-ssh'
gem 'highline'
group :production do
gem 'newrelic_rpm'
gem 'appsignal'
gem 'execjs'
gem 'puma'
gem 'puma_worker_killer'
end
group :development, :test do
gem 'byebug'
gem 'web-console', '~> 2.0'
# gem 'minitest-rails'
gem 'thin'
end
group :development do
gem 'awesome_print'
gem "capistrano"
gem 'capistrano-rails', require: false
gem 'capistrano-bundler', require: false
gem 'capistrano-sidekiq', require: false
gem 'quiet_assets'
gem 'better_errors'
gem 'binding_of_caller'
gem 'terminal-notifier-guard', require: false
gem 'terminal-notifier', require: false
gem 'derailed_benchmarks'
gem 'stackprof' # used by derailed_benchmarks
end
看起来 actionpack、activerecord、activemodel 和 activesupport 都需要版本 5.2.4.rc1
。这是我的本地 gem:
Xuans-MacBook-Pro:moldb xuan$ gem list "activesupport"
*** LOCAL GEMS ***
activesupport (6.0.1, 5.2.4.rc1, 5.2.3, 5.2.0, 5.1.6.1, 4.2.11.1, 4.2.10)
redis-activesupport (5.2.0, 5.0.7, 5.0.3, 4.0.0)
Xuans-MacBook-Pro:moldb xuan$ gem list "activemodel"
*** LOCAL GEMS ***
activemodel (6.0.1, 5.2.4.rc1, 5.2.3, 5.2.0, 5.1.6.1, 4.2.11.1, 4.2.10)
Xuans-MacBook-Pro:moldb xuan$ gem list "actionpack"
*** LOCAL GEMS ***
actionpack (6.0.1, 5.2.4.rc1, 5.2.3, 5.2.0, 5.1.6.1, 4.2.11.1, 4.2.10)
Xuans-MacBook-Pro:moldb xuan$ gem list 'railties'
*** LOCAL GEMS ***
railties (6.0.1, 5.2.4.rc1, 5.2.3, 5.2.0, 5.1.6.1, 4.2.11.1, 4.2.10)
我尝试了各种方法来解决这个升级问题;但没有运气。删除 Gemfile.lock
然后执行 bundle install
对我不起作用(给出相同的错误输出)。
升级任何 Rails 应用程序时非常令人沮丧,依赖地狱很难解决。
感谢您的帮助和建议!
您必须修复 gems 版本,例如:
Bundler could not find compatible versions for gem "railties":
activeadmin was resolved to 2.5.0, which depends on
railties (< 6.1, >= 5.2)
coffee-rails (~> 4.1.0) was resolved to 4.1.0, which depends on
railties (< 5.0, >= 4.0.0)
devise was resolved to 4.2.1, which depends on
railties (< 5.1, >= 4.1.0)
activeadmin was resolved to 2.5.0, which depends on
jquery-rails (~> 4.2) was resolved to 4.3.5, which depends on
railties (>= 4.2.0)
rails (~> 5.2.3) was resolved to 5.2.4.rc1, which depends on
railties (= 5.2.4.rc1)
这告诉你 coffee-rails 依赖于 railties < 5.0,devise 依赖于 railties < 5.1,rails 5.23 依赖于 railties 5.2.4.rc1。因此,在这种情况下,您应该要求更新版本的设计和咖啡-rails。
Bundler could not find compatible versions for gem "activerecord":
acts-as-taggable-on was resolved to 5.0.0, which depends on
activerecord (>= 4.2.8)
deep_cloneable was resolved to 3.0.0, which depends on
activerecord (< 7, >= 3.1.0)
oink was resolved to 0.10.1, which depends on
activerecord
rails (~> 5.2.3) was resolved to 5.2.4.rc1, which depends on
activerecord (= 5.2.4.rc1)
activeadmin was resolved to 1.4.3, which depends on
ransack (>= 1.8.7) was resolved to 1.8.10, which depends on
activerecord (< 5.2, >= 3.0)
这个告诉你你需要 activeadmin 1.4.3 依赖于 ransak >= 1.8.7 依赖于 activerecord < 5.2,但是 rails 5.2.3 依赖于 activerecord 5.2.4.rc1 .您需要更新您的 activeadmin 并搜索 gems.
修复每个 gem 的冲突,告诉您的 gem 文件要使用哪个版本,您可以在 rubygems 查看它们。
您的系统上安装了 gem,但其他 gem 的依赖项之间存在冲突。
我正在尝试将 rails 4.2 应用程序升级到 5.2.3。
我的系统是 MacOS 10.14.6 Mojave。捆绑器版本 2.0.2
这是我做完后的错误 bundle update
:
Bundler could not find compatible versions for gem "actionpack":
In Gemfile:
rails (~> 5.2.3) was resolved to 5.2.4.rc1, which depends on
actionpack (= 5.2.4.rc1)
simple_form was resolved to 5.0.1, which depends on
actionpack (>= 5.0)
rails (~> 5.2.3) was resolved to 5.2.4.rc1, which depends on
sprockets-rails (>= 2.0.0) was resolved to 3.2.1, which depends on
actionpack (>= 4.0)
Bundler could not find compatible versions for gem "activemodel":
In Gemfile:
paperclip was resolved to 6.1.0, which depends on
activemodel (>= 4.2.0)
rails (~> 5.2.3) was resolved to 5.2.4.rc1, which depends on
activemodel (= 5.2.4.rc1)
simple_form was resolved to 5.0.1, which depends on
activemodel (>= 5.0)
Bundler could not find compatible versions for gem "activerecord":
In Gemfile:
acts-as-taggable-on was resolved to 6.5.0, which depends on
activerecord (< 6.1, >= 5.0)
deep_cloneable was resolved to 3.0.0, which depends on
activerecord (< 7, >= 3.1.0)
oink was resolved to 0.10.1, which depends on
activerecord
rails (~> 5.2.3) was resolved to 5.2.4.rc1, which depends on
activerecord (= 5.2.4.rc1)
Bundler could not find compatible versions for gem "activesupport":
In Gemfile:
jbuilder (~> 2.0) was resolved to 2.9.1, which depends on
activesupport (>= 4.2.0)
activeadmin was resolved to 2.5.0, which depends on
kaminari (>= 1.0.1, ~> 1.0) was resolved to 1.1.1, which depends on
activesupport (>= 4.1.0)
rails (~> 5.2.3) was resolved to 5.2.4.rc1, which depends on
activesupport (= 5.2.4.rc1)
rails (~> 5.2.3) was resolved to 5.2.4.rc1, which depends on
sprockets-rails (>= 2.0.0) was resolved to 3.2.1, which depends on
activesupport (>= 4.0)
Bundler could not find compatible versions for gem "railties":
In Gemfile:
activeadmin was resolved to 2.5.0, which depends on
railties (< 6.1, >= 5.2)
coffee-rails (~> 4.1.0) was resolved to 4.1.0, which depends on
railties (< 5.0, >= 4.0.0)
devise was resolved to 4.2.1, which depends on
railties (< 5.1, >= 4.1.0)
activeadmin was resolved to 2.5.0, which depends on
jquery-rails (~> 4.2) was resolved to 4.3.5, which depends on
railties (>= 4.2.0)
rails (~> 5.2.3) was resolved to 5.2.4.rc1, which depends on
railties (= 5.2.4.rc1)
这是我只更新时得到的 rails bundle update rails
:
Bundler could not find compatible versions for gem "activerecord":
In Gemfile:
acts-as-taggable-on was resolved to 5.0.0, which depends on
activerecord (>= 4.2.8)
deep_cloneable was resolved to 3.0.0, which depends on
activerecord (< 7, >= 3.1.0)
oink was resolved to 0.10.1, which depends on
activerecord
rails (~> 5.2.3) was resolved to 5.2.4.rc1, which depends on
activerecord (= 5.2.4.rc1)
activeadmin was resolved to 1.4.3, which depends on
ransack (>= 1.8.7) was resolved to 1.8.10, which depends on
activerecord (< 5.2, >= 3.0)
这是我的 Gemfile:
source 'https://rubygems.org'
ruby '2.5.1'
gem 'rails', '~> 5.2.3'
gem 'mysql2', '<= 0.5.1'
gem 'mini_racer'
gem 'sass-rails'
gem 'coffee-rails', '~> 4.1.0'
gem 'uglifier', '>= 1.3.0'
gem 'jquery-rails'
gem 'jbuilder', '~> 2.0'
gem 'jbuilder_cache_multi'
# gem 'sidekiq'
# gem 'sinatra', require: false # Required by sidekiq/web
gem 'savon'
gem 'soap4r'
gem 'kaminari'
# gem 'actionpack-action_caching'
gem 'acts-as-taggable-on'
gem 'rest-client'
gem 'simple_form'
# gem 'responders', '~> 2.0'
gem 'paperclip'
gem 'whenever', require: false
gem 'typhoeus'
gem 'zip-zip', require: false
gem 'http'
gem 'activeadmin'
gem 'devise'
gem 'redis-rails'
gem 'crack'
gem 'trollop'
gem 'oink'
# gem 'backport_new_renderer'
gem 'deep_cloneable'
gem 'gsl'
gem 'kmeans-clusterer'
gem 'scalpel'
gem 'pragmatic_segmenter'
gem 'memory_profiler'
gem 'parallel'
gem 'sqlite3', '~> 1.3', '>= 1.3.11'
gem 'sprockets-rails', :require => 'sprockets/railtie'
gem 'digest', git: 'git@github.com:ruby/digest.git'
gem 'httparty'
gem 'mail'
gem 'net-ssh'
gem 'highline'
group :production do
gem 'newrelic_rpm'
gem 'appsignal'
gem 'execjs'
gem 'puma'
gem 'puma_worker_killer'
end
group :development, :test do
gem 'byebug'
gem 'web-console', '~> 2.0'
# gem 'minitest-rails'
gem 'thin'
end
group :development do
gem 'awesome_print'
gem "capistrano"
gem 'capistrano-rails', require: false
gem 'capistrano-bundler', require: false
gem 'capistrano-sidekiq', require: false
gem 'quiet_assets'
gem 'better_errors'
gem 'binding_of_caller'
gem 'terminal-notifier-guard', require: false
gem 'terminal-notifier', require: false
gem 'derailed_benchmarks'
gem 'stackprof' # used by derailed_benchmarks
end
看起来 actionpack、activerecord、activemodel 和 activesupport 都需要版本 5.2.4.rc1
。这是我的本地 gem:
Xuans-MacBook-Pro:moldb xuan$ gem list "activesupport"
*** LOCAL GEMS ***
activesupport (6.0.1, 5.2.4.rc1, 5.2.3, 5.2.0, 5.1.6.1, 4.2.11.1, 4.2.10)
redis-activesupport (5.2.0, 5.0.7, 5.0.3, 4.0.0)
Xuans-MacBook-Pro:moldb xuan$ gem list "activemodel"
*** LOCAL GEMS ***
activemodel (6.0.1, 5.2.4.rc1, 5.2.3, 5.2.0, 5.1.6.1, 4.2.11.1, 4.2.10)
Xuans-MacBook-Pro:moldb xuan$ gem list "actionpack"
*** LOCAL GEMS ***
actionpack (6.0.1, 5.2.4.rc1, 5.2.3, 5.2.0, 5.1.6.1, 4.2.11.1, 4.2.10)
Xuans-MacBook-Pro:moldb xuan$ gem list 'railties'
*** LOCAL GEMS ***
railties (6.0.1, 5.2.4.rc1, 5.2.3, 5.2.0, 5.1.6.1, 4.2.11.1, 4.2.10)
我尝试了各种方法来解决这个升级问题;但没有运气。删除 Gemfile.lock
然后执行 bundle install
对我不起作用(给出相同的错误输出)。
升级任何 Rails 应用程序时非常令人沮丧,依赖地狱很难解决。
感谢您的帮助和建议!
您必须修复 gems 版本,例如:
Bundler could not find compatible versions for gem "railties":
activeadmin was resolved to 2.5.0, which depends on
railties (< 6.1, >= 5.2)
coffee-rails (~> 4.1.0) was resolved to 4.1.0, which depends on
railties (< 5.0, >= 4.0.0)
devise was resolved to 4.2.1, which depends on
railties (< 5.1, >= 4.1.0)
activeadmin was resolved to 2.5.0, which depends on
jquery-rails (~> 4.2) was resolved to 4.3.5, which depends on
railties (>= 4.2.0)
rails (~> 5.2.3) was resolved to 5.2.4.rc1, which depends on
railties (= 5.2.4.rc1)
这告诉你 coffee-rails 依赖于 railties < 5.0,devise 依赖于 railties < 5.1,rails 5.23 依赖于 railties 5.2.4.rc1。因此,在这种情况下,您应该要求更新版本的设计和咖啡-rails。
Bundler could not find compatible versions for gem "activerecord":
acts-as-taggable-on was resolved to 5.0.0, which depends on
activerecord (>= 4.2.8)
deep_cloneable was resolved to 3.0.0, which depends on
activerecord (< 7, >= 3.1.0)
oink was resolved to 0.10.1, which depends on
activerecord
rails (~> 5.2.3) was resolved to 5.2.4.rc1, which depends on
activerecord (= 5.2.4.rc1)
activeadmin was resolved to 1.4.3, which depends on
ransack (>= 1.8.7) was resolved to 1.8.10, which depends on
activerecord (< 5.2, >= 3.0)
这个告诉你你需要 activeadmin 1.4.3 依赖于 ransak >= 1.8.7 依赖于 activerecord < 5.2,但是 rails 5.2.3 依赖于 activerecord 5.2.4.rc1 .您需要更新您的 activeadmin 并搜索 gems.
修复每个 gem 的冲突,告诉您的 gem 文件要使用哪个版本,您可以在 rubygems 查看它们。
您的系统上安装了 gem,但其他 gem 的依赖项之间存在冲突。