如何在Rails项目之间共享数据库、迁移和模型?

7
我知道StackOverflow上已经有类似的问题了,但它们往往过时了,而且没有充分解决以下情况下迁移应该如何工作,这应该是相当常见的:
  • 您有一种应用程序,实现在Rails中。
  • 您有一种针对数据的管理应用程序,它是一个独立的应用程序,在Rails中实现。
  • 这两个应用程序都在同一数据库和模型上操作。
我的问题是:最好的方式是如何分解我们的模型,使得这两个应用程序不必重复模型代码?
我们关注以下内容:
  • 对于共享模型,数据库迁移应该放在哪里?
  • 如果每个单独的应用程序希望在共享模型之上添加附加模型,这些迁移在哪里存储?
  • 将现有的迁移移动到拟议的共享迁移计划的最佳方法是什么?
谢谢。
1个回答

1
我不确定这是否是最佳方法,但我们在其中一个符合此模型的产品中采用以下方法:
对于共享模型,数据库迁移应该放在哪里?
我们将所有迁移都保存在管理员系统下。您不需要让它们存在两次,所以它们就放在那里。
如果每个应用程序希望在共享模型之上添加其他模型,这些迁移应该放在哪里?
我们共享所有模型。这可能只与一个应用程序相关,例如 - “收藏项目”概念可能只关系到最终用户。但以后管理员可能想知道哪些项目最受欢迎。
其次,如果您想通过控制台调查任何内容,如果不需要访问单独的应用程序,那么共享模型会非常有用,因为它们不会为每个表都拥有模型。
共享模型中的功能因应用程序而异,检测Rails环境变量,我们已扩展其包含更多上下文。例如:if Rails.env == 'admin_production'
如何将现有的迁移移动到建议的共享迁移方案中?
什么是最佳方法?

再次强调,迁移应该只存在一次,共享数据库知道哪些已经运行过,所以除非你在重命名迁移文件,否则只需要选择一个位置并移动文件。


谢谢,明白了。现在关于共享模型,你们是使用库、Rails引擎还是其他什么东西? - Jake
我们使用符号链接(或类似方式)从“从属”应用程序指向主文件。 - Matt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接