将Rails从4.2.0更新到5.0.2时出现问题

时间:2019-07-11 05:59:00

标签: ruby-on-rails ruby

Bundler could not find compatible versions for gem "actionpack":
  In Gemfile:
    active_model_serializers (~> 0.10.0.rc5) was resolved to 0.10.9, which depends on
      actionpack (>= 4.1, < 6)

    axlsx_rails (~> 0.5.0) was resolved to 0.5.2, which depends on
      actionpack (>= 3.1)

    haml-rails was resolved to 1.0.0, which depends on
      actionpack (>= 4.0.1)

    rails (= 5.0.2) was resolved to 5.0.2, which depends on
      actionpack (= 5.0.2)

    responders (~> 2.0) was resolved to 2.4.1, which depends on
      actionpack (>= 4.2.0, < 6.0)

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

Bundler could not find compatible versions for gem "activerecord":
  In Gemfile:
    activerecord-postgis-adapter (~> 3.1.4) was resolved to 3.1.5, which depends on
      activerecord (~> 4.2)

    rails (= 5.0.2) was resolved to 5.0.2, which depends on
      activerecord (= 5.0.2)

Bundler could not find compatible versions for gem "rails":
  In Gemfile:
    rails (= 5.0.2)

    leaflet-rails was resolved to 1.5.1, which depends on
      rails (>= 4.2.0)

    react-rails (~> 1.6.0) was resolved to 1.6.2, which depends on
      rails (>= 3.2)

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

    resque-scheduler (~> 4.3.0) was resolved to 4.3.1, which depends on
      resque (~> 1.26)

我将文件“ GemFile”更改为5.0.2并给出了错误。该错误并不表示任何gem不支持5.0.2。请帮帮我。 更新原因如下:

dayanov-sa@dayanov-sa:~/workspace/main/sokol_dev$ rails c
/home/dayanov-sa/.rvm/gems/ruby-2.6.3/gems/activesupport-4.2.0/lib/active_support/core_ext/object/duplicable.rb:85: warning: BigDecimal.new is deprecated; use BigDecimal() method instead.
/home/dayanov-sa/.rvm/gems/ruby-2.6.3/gems/activesupport-4.2.0/lib/active_support/core_ext/numeric/conversions.rb:121: warning: constant ::Fixnum is deprecated
/home/dayanov-sa/.rvm/gems/ruby-2.6.3/gems/activesupport-4.2.0/lib/active_support/core_ext/numeric/conversions.rb:121: warning: constant ::Bignum is deprecated
Traceback (most recent call last):
        7948: from bin/rails:4:in `<main>'
        7947: from bin/rails:4:in `require'
        7946: from /home/dayanov-sa/.rvm/gems/ruby-2.6.3/gems/railties-4.2.0/lib/rails/commands.rb:17:in `<top (required)>'
        7945: from /home/dayanov-sa/.rvm/gems/ruby-2.6.3/gems/railties-4.2.0/lib/rails/commands/commands_tasks.rb:39:in `run_command!'
        7944: from /home/dayanov-sa/.rvm/gems/ruby-2.6.3/gems/railties-4.2.0/lib/rails/commands/commands_tasks.rb:67:in `console'
        7943: from /home/dayanov-sa/.rvm/gems/ruby-2.6.3/gems/railties-4.2.0/lib/rails/commands/commands_tasks.rb:142:in `require_application_and_environment!'
        7942: from /home/dayanov-sa/.rvm/gems/ruby-2.6.3/gems/railties-4.2.0/lib/rails/application.rb:328:in `require_environment!'
        7941: from /home/dayanov-sa/.rvm/gems/ruby-2.6.3/gems/activesupport-4.2.0/lib/active_support/dependencies.rb:274:in `require'
         ... 7936 levels...
           4: from /home/dayanov-sa/.rvm/gems/ruby-2.6.3/gems/activesupport-4.2.0/lib/active_support/core_ext/numeric/conversions.rb:131:in `block (2 levels) in <class:Numeric>'
           3: from /home/dayanov-sa/.rvm/gems/ruby-2.6.3/gems/activesupport-4.2.0/lib/active_support/core_ext/numeric/conversions.rb:131:in `block (2 levels) in <class:Numeric>'
           2: from /home/dayanov-sa/.rvm/gems/ruby-2.6.3/gems/activesupport-4.2.0/lib/active_support/core_ext/numeric/conversions.rb:131:in `block (2 levels) in <class:Numeric>'
           1: from /home/dayanov-sa/.rvm/gems/ruby-2.6.3/gems/activesupport-4.2.0/lib/active_support/core_ext/numeric/conversions.rb:131:in `block (2 levels) in <class:Numeric>'
/home/dayanov-sa/.rvm/gems/ruby-2.6.3/gems/activesupport-4.2.0/lib/active_support/core_ext/numeric/conversions.rb:131:in `block (2 levels) in <class:Numeric>': stack level too deep (SystemStackError)

我尝试了许多方法来解决此问题,但没有任何帮助。有没有人遇到过类似的情况,并且知道解决此问题的方法。

Rails 4.2.0

红宝石2.6.3p62(2019-04-16修订版67580)[x86_64-linux]

2 个答案:

答案 0 :(得分:1)

啊,ol's Rails主要版本的凹凸任务。

看起来您的许多宝石都在Gemfile中设置了特定的版本。仅仅更改rails gem版本并不能解决问题,您会遇到很多依赖关系错误,更糟糕的是,这仅仅是开始-以后很多其他情况可能会变糟。

您可以从所有gem中删除版本,然后将rails设置为5.2或任何其他值,然后在它们弹出时逐步解决依赖项错误。期望这是一个漫长的过程,并且显然不要在生产机器上这样做。

在某些情况下,甚至可能需要或发现将更新应用于基础服务(例如数据库)更方便。

如果您没有任何规格/测试,则需要测试整个应用程序,或开始编写它们。

https://guides.rubyonrails.org/upgrading_ruby_on_rails.html

答案 1 :(得分:0)

在Gemfile中进行更改后,您是否运行过bundle install?并且不建议直接升级到Rails 5.2。首先使其稳定并在Rails 5.0中运行,然后在5.1中运行