我正在将Rails应用程序从4.2.x升级到5.0.x.在Gemfile
更新了所有与Rails相关的宝石之后,我根据upgrade guide运行了rails
任务,以更新我的所有文件以符合最新版本:
rails app:update
此命令中存在许多冲突,因此我按a
接受所有冲突,然后在提交之前手动查看它们。我主要担心的是config/routes.rb
文件发生了什么。基本上,文件的全部内容(保存为Rails.application.routes.draw
块以及关于添加到文件末尾的DSL的单个注释)保留。多年来添加到应用程序的所有路由都被清除,而不是在任何其他文件中找到。
这个问题不会阻止我,我只是检查文件以使其恢复到以前的状态。但是,特别令我担心的是,在用于升级Rails版本的正常情况中清除了一个基本文件。我想看看是否有其他人遇到过这个问题,这是否是预料到的,是怎么回事。欢迎来自Rails维护者的评论。谢谢。
答案 0 :(得分:1)
app:update
任务只是该任务的稍作修改的版本,它创建了一个新的Rails应用程序。它根据新的Rails版本中的模板写出config/
和bin/
下的文件。如果您选择a
接受所有冲突,那么这仅表示Rails将使用其自己的副本覆盖任何不同的文件,而无需询问您。这是正常现象,是预期的。如果您不希望出现这种情况,请不要按a
。
config/routes.rb
几乎可以肯定是config/
下的一个文件,几乎与空白样板文件完全不同。
实际上,不能期望Rails解析您的自定义更改并将其与新模板合并。
对于它的价值,我想开始做与您完全一样的工作,使用一个干净的工作目录,只需让app:update
任务覆盖它想要的任何内容,然后一边进行所有更改,另外,vim-fugitive之类的支持SCM的差异工具可以分阶段或丢弃差异。
答案 1 :(得分:-1)
好吧,不要接受所有冲突,看看每一个冲突。进行1级的版本升级可能会改变很多事情,这个过程需要一段时间。
首先看看框架中的变化并仔细执行此过程。你可能会破坏更多你没注意到的东西:
http://edgeguides.rubyonrails.org/upgrading_ruby_on_rails.html#upgrading-from-rails-4-2-to-rails-5-0