有没有人尝试过多域/多数据库/单部署Rails设置?

时间:2010-09-03 21:59:11

标签: ruby-on-rails

我正在开发一个应用程序(基本上是一个内部网),它有几个小的用户组,每个用户都在内部使用该应用程序。

到目前为止,每组用户都有自己的部署,其中包含单独的域名和数据库,但所有用户都在同一台服务器上。这意味着每次我必须推送升级时,我需要为每个客户端部署一次。此外,每个新客户端意味着添加一个新的部署目标,我目前正在使用Capistrano的多级插件,但它有点荒谬。

这是一个不太理想的设置,所以经过一番思考后,我想出了修改应用程序的想法,以便它处理多个域,每个域映射到不同的数据库,但是在单个部署上。我创建了一个小概念验证应用程序,它基本上在ApplicationController中有一个before_filter,充当域/数据库的多路复用器,在每个请求上将ActiveRecord连接到每个域的数据库。这非常有效,但我还没有将它应用到大型应用程序中,我可以想到至少有一个问题:在所有数据库中运行迁移。我很确定我可以解决这个问题,也许我会稍微调整一下rake任务,但我担心这可能不是最后一个问题。

有没有人试过这个,或者可以想到为什么这会是一个坏主意的任何主要原因?我想听一些意见。

谢谢!

2 个答案:

答案 0 :(得分:0)

这通常称为多租户。 Here是关于在rails中执行此操作的演示文稿或视频。无法判断它是否有用,它在工作中被阻止了。

不,这不是一个想法。我不确定你的具体实现,但我过去曾经在多租户的应用程序上工作过,并且不能说我们遇到了很多困难,除非有麻烦的客户想留在产品的遗留版本上我们我想继续前进。

答案 1 :(得分:0)

我有一个类似的应用程序,仍然和你一样的问题,经过多次尝试,我最终(在一个理想的核心解决方案出现之前)每个域有一个env文件,并且像你一样过滤器。

我已经在生产中运行了近1年,我发现的唯一问题是rails期望主数据库(即使你不会使用它)具有与其他数据库相同的迁移级别。 (这个问题在某些条件下出现)

如果您需要更多细节,请告诉我。

我希望这会有所帮助。