我想知道人们如何处理在生产环境中逐步推出的功能和版本。 这种情况是,您有两个版本的测试代码,一个已经在生产中,另一个即将推出,这些是常见问题。
- 同一 Rails 应用程序中不同版本的代码。
- 在向用户推出期间不同版本的 Rails 应用程序。
- 版本之间的数据库结构不同
- 在新数据库和服务器之间移动数据。
以下是上述讨论的一些想法
- if 语句,具有常量,版本号为 M,V,C 名称
- 负载均衡到不同的应用服务器(如何使粘性? 将
- 表中的旧字段和新字段作为临时字段,或将记录迁移到新表或
数据库。 - 没有简单的方法在数据之间移动服务器。
听起来你需要一个好的分支和合并策略。如果你使用的是 Git 或 SVN 之类的东西,那么主站或主干上的任何内容都应该是生产就绪的质量。如果您遇到AbcController
很好并准备就绪的情况,但XyzController
是片状的,那么XyzController
可能需要更多测试,并且不应该掌握。
Rails 中的迁移也遵循此策略,这会导致您的数据结构。如果您认为已准备好进行生产,则数据库不应进行重大更改。也许您需要添加列或功能,但您应该已经完成了大规模的数据库重构。
最后,在任何迁移情况下,上传/更新数据都是一件痛苦的事情。根据我的经验,它涉及编写SQL脚本来执行移动,或更新数据库以获取某些新功能。这些 SQL 脚本也应受源代码管理。Rails 可以通过在迁移文件本身中编写迁移脚本来简化此操作。根据您的具体情况,这可以工作。