单个rails应用程序上的多个域

时间:2010-03-29 16:57:23

标签: ruby-on-rails ruby

这是我第一次使用Ruby on Rails创建应用程序。

我想根据加载的站点切换数据库。使用php我曾经在http主机上做一个简单的strpos,并根据它设置数据库名称。我怎么能用rails做到这一点?

2 个答案:

答案 0 :(得分:2)

当Rails应用程序在生产模式下启动时,它会预加载其类并检索例如来自已配置数据库的列数据。要使用多个数据库,您必须阻止它执行此操作 - 这可能会导致比解决的问题更多的问题。

更容易管理的解决方案就是拥有两个应用程序副本,一个用于监听每个域。

Rails应用程序通常设计为由单个数据库支持运行,如果您的数据仅针对单个域,那么您的数据可能全部位于同一个数据库中,但是相关模型链接到特定数据库“SiteDomain”模型,然后您可以进行内容管理。

答案 1 :(得分:0)

您可以使用不同的环境(例如domain1_production,domain2_production等)运行您的应用程序,这样您就可以在database.yml数据库环境中为您的所有域定义。但每个环境都必须在内存中运行自己的过程。

另一个解决方案是在每个模型中设置before_filter并解析您需要的域设置数据库连接。但这是非常奇怪的黑客