Rails 3.2到4.0升级问题

问题描述 投票:0回答:2

我是Rails上的红宝石新手,并正在尝试将3.2版的Rails升级到4.0。 Iam逐步升级版本以达到Rails 6版本。我将gem文件中的rails版本更改为4.0(gem lock具有旧版本3.2)并执行了命令捆绑更新rails。它为mongoid_rails_integrations提供了以下错误。

    Bundler could not find compatible versions for gem "json":
  In Gemfile:
    json

    aws-sdk (~> 1.34.1) was resolved to 1.34.1, which depends on
      json (~> 1.4)

    carrierwave-video was resolved to 0.5.6, which depends on
      carrierwave was resolved to 0.11.2, which depends on
        json (>= 1.7)

    mongoid-simple-tags was resolved to 0.1.3, which depends on
      json (~> 1.8)

    simplecov was resolved to 0.13.0, which depends on
      json (>= 1.8, < 3)

Bundler could not find compatible versions for gem "mongoid":
  In snapshot (Gemfile.lock):
    mongoid (= 3.1.7)

  In Gemfile:
    mongoid-rspec (>= 1.4.6) was resolved to 1.13.0, which depends on
      mongoid (~> 3.1)

    mongoid_rails_migrations was resolved to 1.2.1, which depends on
      mongoid (>= 4.0.0)

Running `bundle update` will rebuild your snapshot from scratch, using only
the gems in your Gemfile, which may resolve the conflict.

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

    mongoid_rails_migrations was resolved to 1.0.1, which depends on
      rails (>= 3.2.0)

Bundler could not find compatible versions for gem "railties":
  In Gemfile:
    rails (= 4.0.0) was resolved to 4.0.0, which depends on
      railties (= 4.0.0)

    sass-rails (~> 3.2.3) was resolved to 3.2.6, which depends on
      railties (~> 3.2.0)

但是我的问题是mongoid_rails_migrations取决于大于3.2的rails版本,对于rails 4.0来说是正确的。那么为什么会发生这种错误。任何人请帮助我弄清楚,都可以。

ruby-on-rails ruby mongoid
2个回答
0
投票

如果您使用的是Rails 4.0.0,则可以尝试使用与Rails gem i-e相同版本的sass-rails,然后使用相同版本的sass-rails。同样,还要确保对咖啡轨使用相同的版本,并在Gemfile中更新uglifier

gem 'sass-rails', '~> 4.0.0'
gem 'coffee-rails', '~> 4.0.0'
gem 'uglifier', '>= 1.3.0'

似乎是捆绑器问题。您可以尝试使用最新版本的捆绑软件gem。您的Gemfile中可能有一颗宝石会导致兼容性,但未在此处显示。您还需要更新该gem。您可以尝试更新多个宝石,例如

bundle update mongoid_rails_integrations rails

您还可以尝试注释Gemfile中除rails以外的所有gem,并安装捆绑软件。然后取消注释剩余的宝石并再次安装捆绑包,您无需删除Gemfile.lock,它会自动更新,当您取消注释其他宝石时,这也会根据新版本的rails进行更新。想要的话,您可以尝试一步一步地更新您的宝石。

P.S。抱歉,由于拒绝率低,我无法发表评论。


0
投票

您在当前的升级尝试中有许多相互矛盾的要求。我建议从更容易解决的问题开始,然后再回到轨道上。

aws-sdk (~> 1.34.1) was resolved to 1.34.1, which depends on
  json (~> 1.4)

请先尝试放松aws-sdk版本,以便可以使用json 1.8。

sass-rails (~> 3.2.3) was resolved to 3.2.6, which depends on
  railties (~> 3.2.0)

尝试松开sass-rails版本,以便使该部分消失。

mongoid-rspec (>= 1.4.6) was resolved to 1.13.0, which depends on
  mongoid (~> 3.1)

mongoid_rails_migrations was resolved to 1.2.1, which depends on
  mongoid (>= 4.0.0)

这可能是个问题,但是要处理我之前提到的内容。

最初,我以为您可能由于它们的版本已锁定,因此需要一起更新导轨,活动*和导轨。当前消息并不一定建议您这样做,但是您仍然可以尝试一下。

安装之前我需要删除宝石锁吗?>

不建议。您可能会获得满足gemfile中约束条件的更新,这些约束条件会破坏您的应用程序。当人们试图像这样更新一个古老的应用程序时,通常有一个很好的主意,即有意识地考虑每个依赖关系及其版本更改可能带来的影响。

© www.soinside.com 2019 - 2024. All rights reserved.