【问题标题】:Problem in updating rails from 4.2.0 to 5.0.2从 4.2.0 更新到 5.0.2 的问题
【发布时间】:2019-07-11 05:59:00
【问题描述】:
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

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

【问题讨论】:

标签: ruby-on-rails ruby


【解决方案1】:

啊,老 Rails 主要版本的碰撞任务。

看起来您的许多 Gem 都在您的 Gemfile 中设置了特定版本。单独更改 rails gem 版本是行不通的,你会得到很多依赖错误,更糟糕的是,这只是一个开始 - 很多其他事情以后可能会变坏。

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

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

如果您没有任何规范/测试,您将想要测试整个应用程序,或者开始编写它们。

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

【讨论】:

  • 我可以在 Rails 上安装第二个 ruby​​ 吗?
  • 您可以,但这并不意味着您应该这样做。我会把它分开,启动一些 5 美元的虚拟机并在那里工作,有时最好将它们分开以避免任何可能转化为时间浪费的问题。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2019-06-23
    • 2011-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-15
    • 1970-01-01
    • 2014-08-24
    • 2022-01-08
    相关资源
    最近更新 更多