代码之家  ›  专栏  ›  技术社区  ›  MiniQuark

如何将一个大型Rails应用程序切割成可以一起工作的较小应用程序?

  •  7
  • MiniQuark  · 技术社区  · 17 年前

    我曾经使用过Django,我非常喜欢它的项目/应用程序模型:您可以通过组装一个或多个Django应用程序来构建Django项目。这些应用程序可以是自治的,或者某些应用程序可以构建在其他应用程序之上。一个应用程序可以很容易地依赖另一个应用程序的模型,以及它的控制器(Django dudes称之为“视图”),甚至它的视图(Django中的“模板”)。

    例如,我们当前的应用程序允许我们管理合作伙伴和合同(以及其他事项)。我希望有一个“Partners”应用程序来管理我们的合作伙伴(地址、联系人等),还有一个“Contracts”应用程序来管理我们与合作伙伴的合同。“Contracts”应用程序将依赖于“Partners”应用程序(但为了避免循环依赖,我希望“Partners”应用程序不了解“Contracts”应用程序)。

    目前,我认为以下是主要的选择:

    1. 将这些应用程序转换为插件:没有那么好,也有点困难,但似乎允许model&视图重用
    2. 使用svn external在应用程序之间共享一些模型:简单但丑陋。

    谢谢你的建议。

    4 回复  |  直到 17 年前
        1
  •  5
  •   Mike Woodhouse    17 年前

    由于我也希望能够做到这一点,因此我可以提供四种不完整且相对未经测试的“解决方案”:

    没有特别的顺序。。。

    1. 使用轨道 engines 插件,这显然是工作与2.2现在。这在某种程度上或全部程度上可能会被纳入Rails 2.3(见下文)

    2. 切换到 Merb 哪一个 可能会提供你想要的。 this 是正确的(我该怀疑谁 Yehuda Katz?)一切都一样

    3. 看一看 engines functionality 在Edge Rails中(“Edge”是最新提交但未发布的版本,因此它通常可以正常工作,但可能尚未达到100%的生产质量)。

    4. 研究使用 namespaces in routes.rb app 对于命名空间,意味着您可以将其放入相关 应用程序 子目录,尽管这可能不如为每个“应用程序”单独设置一组Rails目录干净。

        2
  •  2
  •   Otto    17 年前

    如果你想调查Mike的#2选项,Merb切片有 a screencast on the topic that is helpful .

        4
  •  -2
  •   Keltia    17 年前

    我对RoR的看法是,将“应用程序”编写为Rails中的控制器。他们可以非常独立,但可以分享帮助者和观点。我不认识Django,所以可能术语不同。