在Rails应用程序中组织更高级(因此更复杂和更大)的SQL查询有哪些选项?
目的:
答案 0 :(得分:1)
我会考虑将所有内容打包为独立的gem / Rails引擎。
所有必要的自定义SQL迁移(用于创建视图,函数,存储过程等的代码)都可以放在/db/migrations/sql
中,并且可以编写自定义Rake任务来运行这些迁移。
然后,您可以编写各种测试/规范来练习特定于数据库的视图,函数,存储过程等。
此gem将拥有自己的源存储库,并且可以拥有自己的生命周期/发布周期,所有这些都与您的主应用程序无关。可以想象,它可以由一对Ruby专家(用于gem,specs,库)和一个SQL专家(显然)组成。
如果这个库/ API编写得很好,这将为您提供从低级别,特定于数据库的代码中抽象主应用程序的额外好处。也就是说,应用程序开发人员只需要担心调用Widget.complex_sql_query
并处理其返回值而不必担心维护它。相反,数据库后端团队不必过多担心他们的代码是如何使用的 - 只要两个团队都同意API合同并且所有测试覆盖范围都很好。
这可以通过主应用程序不可或缺的所有代码完成,但将所有内容作为一个单独的宝石强加了物理和心理障碍,让两个团队更容易专注于各自的责任区域。