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

ecb*_*die 5 ruby-on-rails ruby-on-rails-5

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

rails app:update
Run Code Online (Sandbox Code Playgroud)

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

这个问题不会阻止我,我会简单地检出文件以将其恢复到以前的状态。然而,让我特别担心的是,在升级 Rails 版本的正常情况下,一个重要文件被清除了。我想看看是否有其他人遇到过这个问题,这是否在意料之中,发生了什么。欢迎 Rails 维护者提出意见。谢谢你。

Ste*_*eve 7

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

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

对于它的价值,我喜欢开始做你所做的事情,使用一个干净的工作目录,让任务app:update覆盖它想要覆盖的任何内容,然后使用并排的、SCM 感知的差异来完成所有更改像vim-fugive这样的工具可以暂存或丢弃差异。