【问题标题】:How to decompose a Rails app into different small apps ecosystem如何将 Rails 应用分解为不同的小应用生态系统
【发布时间】:2012-04-11 04:08:41
【问题描述】:

我的团队一直在为内部使用的单一 Rails 应用程序开发一堆模块。例如,这些模块是请假请求、员工信息、任务/待办事项等。每个模块都有自己的用途,但以某种方式与员工资料和用户身份验证等公共信息相关联。每个模块都分配了一个开发人员,他们将代码提交到同一个 Rails 应用程序。目前,维护代码和规模非常困难。现在,我正在研究将应用程序分解为小型分布式应用程序,并使它们成为一个生态系统。这是我正在寻找的概念:

  • 应该有一个主应用程序来维护其他客户端应用程序的视图。更好的是,它充当其他客户端应用程序插入它的平台。员工登录此主应用以访问客户端应用。
  • 主应用程序应使用 AJAX 或其他方式(未决定)呈现客户端应用程序的视图。
  • 虽然我想分解应用,但每个应用仍然应该能够从生态系统中的其他客户端应用中查询资源/数据,例如员工档案。
  • 其实我还没有决定每个app的交互。向我们思考 RESTful(未决定)。
  • 它应该支持每个开发者可以独立开发每个应用程序的开发环境。因此,在自己的 git 存储库中维护自己的代码。这可能是首先分解应用的主要目的。

我正在阅读使用 Ruby on Rails 进行面向服务的设计这本书,但似乎他们专注于将应用程序分解为不同的小型服务,而我想要拥有不同的小型应用程序。只是想知道是否还有其他方法可以做。

抱歉,问题太长了,问的太多了。只是想知道您是否遇到过同样的情况,并且可以指导我阅读一些文章、社区、书籍,以便我可以继续进行更多研究。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3.1 soa


    【解决方案1】:

    啊重构的乐趣。尝试将应用程序构造成逻辑组以解耦部分可能是一件棘手的事情。

    我强烈建议查看EnginesEngines vs Mountable 提供的信息非常丰富。这允许您构建一个可以打包为 gem 的迷你 Rails 应用程序(又名引擎)。自定义 Engine gem 被捆绑到 Rails 应用程序中,提供一整套可配置的功能(模型、控制器、视图等)。

    面向服务架构的实用性在很大程度上取决于您推送和拉取的数据类型。话虽这么说,Rails 真的是为 RESTful 连接的,所以你可以通过这条路线获得很多收益。

    【讨论】:

    • 您说“自定义引擎 gem 被捆绑到 Rails 应用程序中,提供了一套完整的可配置功能(模型、控制器、视图等)。”但是这些Engine gems可以在物理层面单独部署吗?如果有,怎么做?
    • @theSshow Rails 引擎必须在现有 Rails 应用程序中设置,它们不能独立运行。它们允许将需要 Rails 功能的特性封装在可以重用的 gem 中。例如,提供论坛的 gem 将由运行论坛所需的控制器、视图和模型组成。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-14
    • 2017-10-20
    • 1970-01-01
    • 2012-02-03
    • 2017-02-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多