多个Rails 3.2应用程序/引擎的体系结构

时间:2013-06-19 07:46:35

标签: architecture ruby-on-rails-3.2

我来自Java世界,是Rails的新手。我开发了一个中等大小的Rails 3.2业务应用程序。现在是开发第二个应用程序以及“门户”应用程序的时候了,它允许用户访问这些应用程序并提供管理用户和角色管理。

单点登录是一项要求(登录到门户网站,然后能够访问您有权访问的应用程序),并且需要在应用程序之间共享许多基本域模型。此外,应用程序使用大多数相同的宝石和相同的CSS。

所有应用程序都驻留在同一台服务器上,并且可以共享数据库。有两个开发人员在使用这些应用程序,但一次只有一个应用程序(即没有超过1人的团队)。

似乎有三种方法来构建它(没有将公共数据访问暴露为服务的路径):

  1. 单个大型应用程序,具有命名空间(通过模块和路由)模型,控制器和视图。单个git repo。

  2. 门户网站的单个轻量级主轨道应用程序,包含共享模型,视图和控制器。每个业务应用程序都实现为可安装的Rails引擎。主应用程序和每个引擎的git仓库。

  3. 具有共享模型,视图和控制器的单个完整引擎。用于门户和每个业务应用程序的Rails应用程序,它们都引用了完整的引擎。引擎可以包含我猜的所有模型,比如共享的Java DAO库。完整引擎和每个应用程序的git repo。

  4. 类似Java的方法将是3,这似乎是最合理的方法。从我读过的内容来看,2肯定是可能的,即使引擎用于增强主应用程序的常用功能(例如Devise)。我之前看到过1个实现,但门户+多个Web应用程序架构没有2或3个。将我们现有的应用程序转换为引擎很痛苦,但可能。

    拥有单个大型应用程序和单个服务器有一定的便利性:例如,简化了部署。但它确实意味着应用程序不在他们自己的存储库中,并且对代码的任何更改都需要重新部署整个代码库。这似乎适用于将较小的应用程序组合到一个大型应用程序中,但我怀疑它可以扩展到更大的商业应用程序,即使它们共享很多模型。

    除了文章Migrating from a single Rails app to a suite of Rails enginesRails Engine Patterns之外,似乎没有相关信息。非常感谢经验丰富的Rails开发人员/架构师的一些指导。

0 个答案:

没有答案