Search code examples
ruby-on-railsrubyrubygemsruby-on-rails-5

Failed to upgrade Rails from 4.20 to 5.2.3


I am trying to upgrade a rails 4.2 application to 5.2.3.
My system is MacOS 10.14.6 Mojave. Bundler version 2.0.2

Here is the error after I did 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)

Here is what I got when I only update 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)

Here is my 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: '[email protected]: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

It looks like actionpack, activerecord, activemodel and activesupport all require version 5.2.4.rc1. Here is my local 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)

I tried various way to solve this upgrade issue; but no luck. Removing Gemfile.lock then do bundle install doesn't work for me (which give the same error output).
It's so frustrating when upgrade any Rails application, the dependency hell is just hard to solve.

Thank you for any helps and suggestions!


Solution

  • You have to fix gems version, for example:

    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)
    

    This tells you that coffee-rails depends on railties < 5.0, devise on railties < 5.1, and rails 5.23 depends on railties 5.2.4.rc1. So you should ask for newer versions of devise and coffee-rails in that case.

    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)
    

    This one tells you that you are requiring activeadmin 1.4.3 that depends on ransak >= 1.8.7 that depends on activerecord < 5.2, but rails 5.2.3 depends on activerecord 5.2.4.rc1. You need to update your activeadmin and ransack gems.

    Fix the conflicts for each gem telling your gemfile which version to use for, you can check them at rubygems.

    You have the gems installed on your system, but you have conflicts between other gems' dependencies.