我负责一个 Rails 应用程序,它即将重命名一些面向用户的关键部分(例如 url,以及其他类似的更改,例如将“博客”重命名为“期刊”等)
我有点担心,随着时间的推移,代码库中所有方法、路由和类名的大量旧名称将难以阅读和维护。
处理此类变化的最佳方法是什么?
当给方法和类名加上别名,或者在这里运行迁移时,陷阱在哪里?
谢谢
我负责一个 Rails 应用程序,它即将重命名一些面向用户的关键部分(例如 url,以及其他类似的更改,例如将“博客”重命名为“期刊”等)
我有点担心,随着时间的推移,代码库中所有方法、路由和类名的大量旧名称将难以阅读和维护。
处理此类变化的最佳方法是什么?
当给方法和类名加上别名,或者在这里运行迁移时,陷阱在哪里?
谢谢
如果应用程序正在开发并且尚未投入生产,您可以安全地返回并重命名迁移/模型/视图等......然后执行rake db:migrate:reset
并完成它。你应该有足够的测试来确保重命名不会破坏任何东西,如果是这样,你应该增加你在该区域的测试覆盖率。
就目前正在生产的应用程序执行此操作而言,我建议逐步执行此操作,以减少更改的表面积:
改变你的路线
这可能是最大的变化。首先更新您的路线将使您有机会修复所有视图。
更新您的模型/控制器
您可以在不更改数据库的情况下执行此操作。您可以使用 使您的模型指向一个新的数据库表set_table_name "OldTable"
。这意味着您可以在发行版之外进行任何数据库更改。
更改数据库
希望您使用的是迁移,在这种情况下,只需重命名表并删除 set_table_name。
我会重命名内部类以匹配外部名称,否则在谈论代码时只会引起混乱。当然,路由可以使外部更改易于切换,但是没有什么比在代码中阅读您在网页上看到的内容更好的了。
重命名后,我会在暂存环境中使用实时数据加载应用程序以测试迁移,然后运行类似 tarantula ( http://github.com/relevance/tarantula ) 来抓取您的应用程序以寻找明显的您和您的测试可能遗漏的问题。