Ruby on rails Rails 5升级:routes.rb文件已清除

Ruby on rails Rails 5升级:routes.rb文件已清除,ruby-on-rails,ruby-on-rails-5,Ruby On Rails,Ruby On Rails 5,我正在将Rails应用程序从4.2.x升级到5.0.x。在Gemfile中更新了所有与Rails相关的gem之后,我运行了Rails任务来更新我的所有文件以符合最新版本,如下所示: 这个命令中有很多冲突,所以我按a接受所有冲突,然后在提交之前手动检查它们。我主要关心的是config/routes.rb文件发生了什么。基本上,除了Rails.application.routes.draw块和添加到文件末尾的关于DSL的单个注释外,文件的全部内容都保留了下来。多年来添加到应用程序中的所有路线都被清除

我正在将Rails应用程序从4.2.x升级到5.0.x。在
Gemfile
中更新了所有与Rails相关的gem之后,我运行了
Rails
任务来更新我的所有文件以符合最新版本,如下所示:

这个命令中有很多冲突,所以我按
a
接受所有冲突,然后在提交之前手动检查它们。我主要关心的是
config/routes.rb
文件发生了什么。基本上,除了
Rails.application.routes.draw
块和添加到文件末尾的关于DSL的单个注释外,文件的全部内容都保留了下来。多年来添加到应用程序中的所有路线都被清除,在任何其他文件中都找不到


这个问题不会阻止我,我只需签出文件,将其恢复到以前的状态。然而,我特别担心的是,在升级Rails版本的正常情况下,一个基本文件被清除了。我想看看是否有其他人遇到过这个问题,这是否是意料之中的,发生了什么。欢迎Rails维护人员发表评论。谢谢。

好吧,不要接受所有的冲突,看看每一个冲突。进行1级的版本升级可能会改变很多事情,而且这一过程需要一段时间

首先看一下框架中的变化,并仔细地完成这个过程。你可能会打破很多你没有注意到的东西:


app:update任务只是任务的一个稍加修改的版本,它创建了一个新的Rails应用程序。它根据新Rails版本的模板写出
config/
bin/
下的文件。如果您选择了
a
来接受所有冲突,那么这仅仅意味着Rails将不经您要求而使用自己的副本覆盖任何不同的文件。这是正常的,也是意料之中的。如果不希望出现这种行为,请不要按
a

config/routes.rb
几乎肯定是
config/
下的一个文件,它与空样板文件几乎完全不同。 实际上,Rails不能解析您的自定义更改并将其与新模板合并


值得一提的是,我喜欢一开始就做你所做的事情,有一个干净的工作目录,让
app:update
任务覆盖它想要的任何内容,然后并排完成所有更改,支持SCM的差异工具喜欢分段或放弃差异。

通常使用我在执行升级时编写的测试包。将查看升级指南中的任何主要内容,然后在运行测试并修复任何问题之前将版本启动到一个级别。围绕我的问题的想法不是我不应该手动检查
rails app:update
中更改的文件,我不应该只接受更改而不确保它们适合我的应用程序。我的问题更多的是担心我不理解rails任务的默认逻辑是如何“清除routes.rb”。
rails app:update