Min*_*ark 7 deployment code-reuse refactoring ruby-on-rails
我和Django有点合作,我非常喜欢它的项目/应用程序模型:你可以通过组装一个或多个Django应用程序来构建一个Django项目.这些应用程序可以是自治的,或者某些应用程序可以构建在其他应用程序之上.应用程序可以轻松地依赖于另一个应用程序的模型,以及它的控制器(Django dudes称之为"视图")甚至它的视图(Django中的"模板").
我现在正在开发一个相对大规模的Ruby on Rails项目,我很惊讶地发现在Rails中显然没有简单的方法可以做同样的事情.基本上,在Rails中,一个项目=一个应用程序.我们的项目已经开始作为一个巨大的单片应用程序,我们现在正试图找出如何将其拆分为更小的块.
例如,我们当前的应用程序允许我们管理合作伙伴和合同(以及其他事项).我希望有一个"合作伙伴"应用程序来管理我们的合作伙伴(地址,联系人等)和"合同"应用程序,它将管理我们与合作伙伴的合同."合同"应用程序将依赖于"合作伙伴"应用程序(但为了避免循环依赖,我希望"合作伙伴"应用程序不了解"合同"应用程序).
目前,我认为以下是主要选项:
谢谢你的建议.
由于这是我也想做的事情,我可以提供四个 - 不完整且相对未经测试(由我)"解决方案":
没有特别的顺序......
使用Rails 引擎插件,它现在显然适用于2.2.这在某种程度上可能会进入Rails 2.3(见下文)
切换到 Merb,它有一些叫做"切片"的东西可能会提供你想要的东西.无论如何,如果 这 是正确的(我是谁,我怀疑耶胡达卡茨?)无论如何,总有一天会是同样的事情,这很酷.
看看Edge Rails 中的引擎功能("Edge"是最新提交但尚未发布的版本,因此它通常可以工作,但可能不是100%的生产质量).
查看在routes.rb中使用名称空间 - 将名称分配app
给名称空间意味着您可以将其放入相关app
子目录中的子目录中,尽管对于每个"应用程序"都有一组单独的Rails目录可能不那么干净.
其中,我没有(2)的经验,因为我(在基础设施方面)与Rails绑定,但是没关系,我喜欢Rails.我打算看一下(1)和也许(3),因为2.3可能会在我需要部署我的下一个主要版本之前发布,而我已经尝试过(4),它有效,但很好,很好一点点(对我而言)令人困惑.