Ruby on rails 代码重写和Rails的多租户

Ruby on rails 代码重写和Rails的多租户,ruby-on-rails,ruby-on-rails-3,multi-tenant,Ruby On Rails,Ruby On Rails 3,Multi Tenant,我将要用Ruby On Rails构建一个应用程序。每个客户端都将通过一个YAML文件(或最终存储在数据库中的任何东西,只要有用)拥有自己的个性化配置。考虑到销售流程和每个客户机所需的配置量,开发团队将构建配置文件。预期的客户端数少于100 如何覆盖特定客户机的代码(控制器、视图、布局)(即:每个客户机一个模块?)如何在rails中实现这一点?您可以为每个客户提供模块,并且在控制器中可以动态地要求相应的模块。假设您拥有当前的用户实例,在ApplicationCOntroller中,您可以拥有加载

我将要用Ruby On Rails构建一个应用程序。每个客户端都将通过一个YAML文件(或最终存储在数据库中的任何东西,只要有用)拥有自己的个性化配置。考虑到销售流程和每个客户机所需的配置量,开发团队将构建配置文件。预期的客户端数少于100


如何覆盖特定客户机的代码(控制器、视图、布局)(即:每个客户机一个模块?)如何在rails中实现这一点?

您可以为每个客户提供模块,并且在控制器中可以动态地要求相应的模块。假设您拥有当前的用户实例,在ApplicationCOntroller中,您可以拥有加载实例变量@client\u模块的before\u过滤器,该变量可以在控制器内部用于扩展控制器。您可能需要为每个控制器的每个客户端执行一个模块,以使生活更轻松

如何使用路由执行此操作

    get ":client/:controller/:action/:id"

学习获取资源和名称空间的一些想法。

您是否考虑过为每个客户端提供自己的应用程序和数据库?这将很容易部署和扩展(基于每个客户端)heroku@Seamus此外,我并不真正关心这个特定应用的规模。有了目标市场,我们不可能出现规模问题。即使我们这样做了,我们也可以轻松地对数据库进行分区。对于代码库的拆分,我认为这太需要维护了,你不这么认为吗?你可以让每个人都独立部署一个主分支,直到任何一个客户需要定制。您将为该客户端创建一个分支。然后,您可以定期将主节点合并回每个自定义分支。这似乎比在模型、控制器、视图等中放置多个客户端自定义项更可靠。