Rails 5 升级:routes.rb 文件被清空

8

我正在将一个Rails应用从4.2.x升级到5.0.x。在我更新了Gemfile中所有与Rails相关的gem之后,我运行了rails任务来更新所有文件以符合最新版本,根据升级指南的要求:

rails app:update

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

这个问题并没有阻止我,我只需要检出文件将其恢复到原来的状态。然而,特别让我担心的是,在升级 Rails 版本的情况下,一个重要的文件被清空,这似乎是一个正常的情况。我想知道是否还有其他人遇到过这个问题,这是否是预期的,发生了什么。欢迎 Rails 维护者的评论。谢谢。


通常在升级时会使用我编写的测试包。如果有重大问题,会查看升级指南,然后将版本升级一级,运行测试并修复任何问题。 - ThorTL67
2个回答

7
app:update任务只是创建一个新的Rails应用程序任务的略微修改版本。它根据新版Rails的模板在config/bin/下编写文件。如果您选择了a来接受所有冲突,那么这就意味着Rails将覆盖任何不同的文件并用自己的副本替换,而无需询问您。这是正常的预期行为。如果您不想这样做,则不要按a键。 config/routes.rb几乎可以确定是与空白模板文件完全不同的config/下的一个文件。实际上,不能指望Rails解析您的自定义更改并将其与新模板合并。
值得一提的是,我喜欢从干净的工作目录开始,让app:update任务覆盖它想要的任何东西,然后使用类似vim-fugitive这样的逐个比较的源码管理工具(SCM-aware diff tool)工具来处理所有更改、添加或丢弃差异。

-2

3
我的问题并不是说我不应该手动检查rails app:update更改的文件,这是肯定的,我不应该只是接受更改而不确保它们适合我的应用程序。我的问题更多地涉及到我不理解这个rails任务的默认逻辑是如何“清除routes.rb”的。 - ecbrodie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接