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

rails app:update


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

这个问题不会阻止我,我只需要签出文件以使其恢复到以前的状态即可。但是,特别令我担心的是,在升级Rails版本的正常情况下,已清除了一个基本文件。我想看看是否还有其他人遇到过这个问题,是否可以预料到,这是怎么回事。欢迎Rails维护者发表意见。谢谢。

最佳答案

app:update任务只是创建新的Rails应用程序的任务的稍作修改的版本。它基于新的Rails版本中的模板写出config/bin/下的文件。如果您选择a接受所有冲突,则仅表示Rails将使用其自己的副本覆盖任何不同的文件,而无需询问您。这是正常现象,是预期的。如果您不希望出现这种情况,请不要按a

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

对于它的价值,我想开始做与您完全一样的工作,使用一个干净的工作目录,只需让app:update任务覆盖它想要的任何内容,然后与SCM并排进行所有更改-aa差异工具,例如vim-fugitive来暂存或放弃差异。

10-04 21:52
查看更多