Обновите рельсы с 4.2 до 5.2 зависимостей - PullRequest
0 голосов
/ 08 ноября 2018

Я делаю это обновление впервые, и на первом этапе у меня возникла проблема: - (

В основном я хочу обновить версию моего проекта rails, поэтому я изменил свой Gemfile для rails 5.2 и попытался запустить:

bundle update rails

как указано здесь , но я не могу обновить пакет и получаю следующую ошибку

Bundler could not find compatible versions for gem "activerecord":
  In Gemfile:
    rails (~> 5.2) was resolved to 5.2.1.rc1, which depends on
      activerecord (= 5.2.1.rc1)

    schema_plus_views was resolved to 0.3.1, which depends on
      activerecord (~> 4.2)

Bundler could not find compatible versions for gem "rails":
  In Gemfile:
    rails (~> 5.2)

    gaffe was resolved to 1.2.0, which depends on
      rails (>= 4.0.0)

    rails_admin was resolved to 1.3.0, which depends on
      rails (< 6, >= 4.0)

    rails_admin_globalize_field was resolved to 0.4.0, which depends on
      rails (>= 4.2)

    sql-logging was resolved to 3.0.10, which depends on
      rails (>= 4.0)

Bundler could not find compatible versions for gem "rake":
  In Gemfile:
    rake (~> 11.2)

    capistrano (~> 3.6) was resolved to 3.11.0, which depends on
      rake (>= 10.0.0)

    derailed_benchmarks was resolved to 1.3.2, which depends on
      rake (< 13, > 10)

Мой Gemfile

source 'https://rubygems.org'

gem 'pg', platform: :ruby
gem 'schema_plus_views'
gem 'fix-db-schema-conflicts', github: 'davidlibrera/fix-db-schema-conflicts'

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rake', '~> 11.2'
gem 'rails', '~> 4.2'
# gem 'rb-readline'
# Use postgresql as the database for Active Record
# Use SCSS for stylesheets
gem 'sass-rails'
gem "less-rails", platform: :ruby #Sprockets (what Rails 3.1 uses for its asset pipeline) supports LESS
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier'
# Use CoffeeScript for .js.coffee assets and views
gem 'coffee-rails'
gem "typescript-rails"
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
gem "bootstrap-sass"
gem "font-awesome-rails"
gem 'haml'

# Use jquery as the JavaScript library
gem 'jquery-rails'
gem "bower-rails"
# Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks
# gem 'turbolinks'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'oj'
gem 'jbuilder'
gem 'angular-rails-templates'
gem 'gaffe'
gem 'color-generator'

# Use ActiveModel has_secure_password
gem 'bcrypt', '~> 3.1'

# we have keep redis client below version 4 until this issue is solved
# https://github.com/antirez/redis/issues/4272
# and we have to keep redis below 3.3.2 until this issue is solved
# https://github.com/redis/redis-rb/issues/650
gem 'redis', '3.3.5', require: %w(redis redis/connection/hiredis)
gem 'hiredis'
gem 'puma'
gem 'puma_worker_killer'
gem "dalli"
gem 'jbuilder_cache_multi'
gem 'globalize', '~> 5.0'
gem 'rack-attack'
gem 'ya2yaml'
gem 'cells-rails'
gem 'cells-erb'

# gem 'highline'
gem 'kaminari'
gem 'nokogiri'

gem 'zss', git: "https://github.com/ISEngineering/zmq-service-suite-ruby", platform: :ruby
gem 'ffi-rzmq', '2.0.4'

gem 'therubyracer'
gem "paperclip", "~> 4.3"
gem 'bootstrap-wysihtml5-rails'
gem 'rails-i18n', '~> 4.0'

# Excel depdendencies
gem 'xlsxtream', '>= 2'

# Excel legacy export
gem 'axlsx_rails', '0.5.1'
gem 'axlsx', git: 'https://github.com/randym/axlsx.git'
gem 'rubyzip', '>= 1.2.1'
gem 'zip-zip'

gem 'devise', '~> 4.2'
gem 'devise-i18n'
gem 'savon', '~> 2.10'

gem 'party_foul', git: 'https://github.com/alexanderadam/party_foul.git', branch: 'bugfix/132-dont-assume-that-exceptions-have-a-backtrace' #'>= 1.5.5'

gem 'ledermann-rails-settings'
gem 'dentaku'
gem 'delayed_job_active_record'
gem 'cancancan'
gem 'rolify'
gem 'rails_admin'
gem 'enumerize'
gem 'rails_admin_settings'
gem 'rails_admin_globalize_field'
gem 'trailblazer-rails'
gem 'premailer-rails'
gem 'bulk_insert'

# for assets that are referenced by libraries in vendor/assets
gem 'non-stupid-digest-assets'

gem 'actionpack-action_caching'
gem 'dotenv-rails'

group :development, :test do
  gem 'database_cleaner'
  gem 'rspec-rails'
  gem 'pry'
  gem 'pry-nav'
  gem 'awesome_print'
  gem 'mocha'
  gem 'webmock' # for vcr
  gem 'vcr'
  gem 'chromedriver-helper', '>= 2.1.0'
  gem 'selenium-webdriver', '3.9.0'
  gem 'capybara'
end

group :test do
  gem 'factory_bot_rails'
  gem 'db-query-matchers'
  gem 'capybara-screenshot'
  gem 'fakeredis',  require: 'fakeredis/rspec'
end

group :development do
  gem 'i18n-tasks'
  gem 'spring'
  gem 'letter_opener'
  gem 'derailed_benchmarks'
  gem 'sql-logging'
  gem 'rubocop'
  gem 'rubocop-rspec'
  gem 'fasterer'
  gem 'better_errors'
  gem 'binding_of_caller'
  gem 'activerecord-colored_log_subscriber' # this won't be required with rails 5 anymore

  # Use Capistrano for deployment
  gem 'capistrano',  '~> 3.6'
  gem 'capistrano-rbenv', '~> 2.0'
  gem 'capistrano-bundler', '~> 1.1.2'
  gem 'capistrano-rails'
  gem 'capistrano3-puma', github: "seuros/capistrano-puma"
  gem 'capistrano3-delayed-job', '~> 1.0'

end

group :profile do
  gem 'ruby-prof'
end

gem 'sdoc', group: :doc
gem 'sshkit' # is needed to load tasks on server

Что мне делать?

Ответы [ 2 ]

0 голосов
/ 04 июля 2019

Для обновления ваших зависимостей вы можете использовать такие инструменты, как bummr . Пожалуйста, убедитесь, что у вас есть хороший набор тестов, как указано в README. После этого вы можете приступить к исправлению проблем совместимости, устареваний и многого другого.

0 голосов
/ 11 ноября 2018

Во-первых, как отметил ThorTL67 в комментариях, неплохо бы обновлять версию Rails постепенно, а не одним большим скачком. Таким образом, ваши проблемы с зависимостями будут менее сложными.

Проверьте, какую версию Bundler вы используете, запустив bundle version. Если эта версия старая, возможно, некоторые зависимости рассчитаны неправильно, и это может помочь обновить Bundler (gem update bundler).

Затем перейдите к шагам, которые вы можете предпринять для обновления с 4.2 до «более высокой версии» Список ошибок, которые вы получили, показывает конфликты между гем-зависимостями. Вы можете попытаться решить эти конфликты один за другим.

Bundler could not find compatible versions for gem "activerecord":
  In Gemfile:
    rails (~> 5.2) was resolved to 5.2.1.rc1, which depends on
      activerecord (= 5.2.1.rc1)

    schema_plus_views was resolved to 0.3.1, which depends on
      activerecord (~> 4.2)

Эта ошибка довольно проста. Он говорит вам, что для gem rails требуется activerecord v5.2.1, но для этого гема schema_plus_views требуется activerecord> = 4.2.0, но <5.0 (см. Объяснение ограничений </a> в RubyGems ). Так как это решить? Если вы проверите исходную страницу для schema_plus_views, то увидите, что для activerecord v5.2.1 пока что нет совместимой версии, и что она вряд ли скоро там появится: Любой план обновления этого драгоценного камня будет совместим с рельсами 5.2?

Так что в этом случае у вас есть несколько вариантов. Оставьте его в своем Gemfile и удалите зависимости от этого гема из своего кода; проверить наличие альтернативных драгоценных камней, которые дают вам необходимую функциональность; помогите обновить гем для поддержки рельсов 5.

Bundler could not find compatible versions for gem "rails":
  In Gemfile:
    rails (~> 5.2)

    gaffe was resolved to 1.2.0, which depends on
      rails (>= 4.0.0)

    rails_admin was resolved to 1.3.0, which depends on
      rails (< 6, >= 4.0)

    rails_admin_globalize_field was resolved to 0.4.0, which depends on
      rails (>= 4.2)

    sql-logging was resolved to 3.0.10, which depends on
      rails (>= 4.0)

Я на самом деле не уверен, в чем здесь проблема. Эти зависимости от самоцвета rails, похоже, не противоречат друг другу, поэтому я постараюсь выяснить, в чем заключается самоцвет, закомментировав их один за другим, а затем снова попробовав обновление. Это может дать вам больше информации.

Bundler could not find compatible versions for gem "rake":
  In Gemfile:
    rake (~> 11.2)

    capistrano (~> 3.6) was resolved to 3.11.0, which depends on
      rake (>= 10.0.0)

    derailed_benchmarks was resolved to 1.3.2, which depends on
      rake (< 13, > 10)

Это также, похоже, не должно быть проблемой. Я бы попытался изменить вашу зависимость от рейка в вашем Gemfile с gem 'rake', '~> 11.2' до gem 'rake' и посмотреть, что происходит с сообщениями о зависимости.

Скорее всего, после всех этих шагов вы получите различные сообщения об ошибках. Вы должны решать их один за другим таким же образом. К сожалению, серебряной пули не существует, и обновление Rails может быть утомительным процессом, особенно когда ваше приложение зависит от множества гемов. Вы должны решить эту проблему, проблему за вопросом, удалив свои собственные зависимости от драгоценных камней, помогая сообществам драгоценных камней с обслуживанием / обновлениями или (в худшем случае) разветвив драгоценный камень и изменив код самостоятельно, чтобы он снова работал для вашего приложения. Удачи!

...