我是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来说是正确的。那么为什么会发生这种错误。任何人请帮助我弄清楚,都可以。
如果您使用的是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。抱歉,由于拒绝率低,我无法发表评论。
您在当前的升级尝试中有许多相互矛盾的要求。我建议从更容易解决的问题开始,然后再回到轨道上。
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中约束条件的更新,这些约束条件会破坏您的应用程序。当人们试图像这样更新一个古老的应用程序时,通常有一个很好的主意,即有意识地考虑每个依赖关系及其版本更改可能带来的影响。