我使用过 Django,我非常喜欢它的项目/应用程序模型:您可以通过组装一个或多个 Django 应用程序来构建一个 Django 项目。这些应用程序可以是自治的,或者某些应用程序可以构建在其他应用程序之上。一个应用程序可以很容易地依赖另一个应用程序的模型,以及它的控制器(Django 帅哥称它们为“视图”)甚至它的视图(Django 中的“模板”)。
我现在正在处理一个相对较大的 Ruby on Rails 项目,我很惊讶地发现在 Rails 中做同样的事情显然没有简单的方法。基本上,在 Rails 中,一个项目 = 一个应用程序。我们的项目一开始是一个巨大的单体应用程序,现在我们正试图弄清楚如何将它分成更小的块。
例如,我们当前的应用程序允许我们管理合作伙伴和合同(除其他外)。我想要一个“合作伙伴”应用程序来管理我们的合作伙伴(地址、联系人等)和一个“合同”应用程序来管理我们与合作伙伴的合同。“合同”应用程序将依赖于“合作伙伴”应用程序(但为了避免循环依赖,我希望“合作伙伴”应用程序不了解“合同”应用程序)。
目前,我认为以下是主要选项:
- 使这些应用程序通过 REST 请求进行通信(每个应用程序都将充当 Web 服务):这很好,但似乎禁止重用其他应用程序的视图。例如,如果“合作伙伴”应用程序有一个不错的页面来显示合作伙伴的详细信息,并且如果我想在合同详细信息页面的中间显示该页面,稍作修改,我看不到其他方法这比让“合同”应用程序通过 REST 请求向“合作伙伴”应用程序询问合作伙伴详细信息(它将获得对象表示,而不是视图),然后从“合作伙伴”应用程序到“合同”应用程序。
- 将这些应用程序变成插件:没有那么好,而且有点困难,但似乎允许模型和视图重用
- 使用 svn external 从应用程序到应用程序共享一些模型:简单但丑陋。
感谢您的建议。