如何组织Rails应用程序,每个客户拥有自己的特定宝石列表?

时间:2016-05-28 09:36:13

标签: ruby-on-rails ruby design-patterns rubygems

我正在创建应用程序的架构并尝试找到最好的应用程序。关于它的几句话:

  • Box解决方案(每个应用安装在客户的机器上)
  • 有一个主应用程序和宝石来扩展它(私人)
  • 主应用程序有默认的gem列表
  • 通过请求添加其他宝石(我们的宝石)延伸的其他功能

但是有些客户不需要全部功能,因此我们不需要将所有宝石都包含在它的Gemfile中。

组织它的最佳方法是什么?您对此有何看法?也许你可以提供更有效的方式?

1 个答案:

答案 0 :(得分:1)

您可能需要考虑制作“主要应用”或核心功能a mountable engine,而不是Rails应用。

这意味着将控制器,模型和路由打包到一个gem中,该​​gem被添加到为特定客户定制的库存Rails应用程序中。这就是CMS:如Refinery和Radiant的结构。

这允许每个“Box”完全自由地拥有它想要的任何设置和宝石。如果您打算让客户自己托管(这是一场噩梦),这一点尤其重要。

它还使得开发和更新核心变得更容易,因为捆绑器将解析gem依赖关系。您可以将“默认”gems添加为可安装引擎gem的依赖项。

如果您想更轻松地创建/更新/开发各个应用程序,可以将其设置为“模板”应用程序的GIT分支。