在将rails 4.2.10升级到rails 5.0.0期间,Gem依赖项不兼容

时间:2017-12-04 14:57:53

标签: ruby-on-rails ruby-on-rails-4 ruby-on-rails-5 bundler gemfile

我正处于升级rails 4 app的过程中。 在rails upgrade guide之后,我使用gemfile替换了4.2.10更新了当前的rails版本。

但是在运行5.0.0之后,即使在运行bundle update rails(使用4.2.10)后,我也会遇到许多不兼容问题,这会将所有宝石更新为最新版本。

以下是我在gemfile中使用rails 4.2.10运行bundle update rails后遇到的兼容性错误:

rails 5.0.0

2 个答案:

答案 0 :(得分:0)

你的问题是什么?

在更新gem之前,您必须检查您的项目代码和依赖项是否已准备好进行此更改,如果这是一个大应用程序,则不是一个简单的过程。

1。回到你的de rails版本。

gem install <gem> -v=<version>

e.g。

gem install rails -v=4.2

这样您的rails应用程序应该使用您想要的版本。

2。更新其余的宝石......(如果你不确定新版本,不推荐使用它)

检查你的Gemfile.lock:

bundle update

或者删除您的Gemfile.lock(当您尝试启动rails应用时,它会自动重建)。

答案 1 :(得分:0)

最后经过多次试验和测试,我能够运行bundle install。列出我尝试的步骤 -

<强> 1。使用带有rails newrails 5创建一个新的演示应用程序。

<强> 2。删除现有的Gemfile.lock

第3。删除所有当前的宝石 :(我在gem list --no-versions中使用 for i;执行从{{3引用的gem uninstall -aIx $ i;已完成 命令}}。)

<强> 4。将现有Gemfile替换为通过创建新的rails 5应用生成的新版Gemfile。 (假设您将拥有现有bundle install的备份副本。)

<强> 5。将单个gems从旧文件复制到新文件。

<强> 6。运行rails app:update 。 (执行完毕后你应该有:)。

<强> 7。运行engine.name=corp-000 db.driver=com.mysql.jdbc.Driver db.url=jdbc:mysql://localhost/corp?tinyInt1isBit=false db.user=root db.password= registration.url= sync.url=http://localhost:31415/sync/corp-000 group.id=corp external.id=000 job.purge.period.time.ms=7200000 job.routing.period.time.ms=5000 job.push.period.time.ms=10000 job.pull.period.time.ms=10000 initial.load.create.first=true auto.registration=true auto.reload=true 继续升级过程。