Rails + PostgreSQL:search_path取决于子域

时间:2011-03-07 02:15:40

标签: ruby-on-rails postgresql connection-pooling

在我们的rails 2.x应用程序中,数据库连接的search_path取决于与之联系的子域(基本上是search_path = "production_"+subdomain)。因为每个连接定义了search_path,并且数据库连接在请求上共享,即使是并发,这也是一个问题。我宁愿不要将并发更改为仅出于显而易见的原因一次只提供一个请求。

那么有没有办法在连接池中对数据库连接进行分组,并设置某种策略,只有一个适合的连接用于请求?或者有没有办法在每个子域使用一个连接池(超时后池会自动丢弃)?为每个子域启动rails实例是没有选择的,因为可能有许多空闲子域(它是某种亲帐户,您可以获得子域,并且您自己的“世界”与某些表中的其他站点不同)。 / p>

这个问题的最佳解决方案是什么?

1 个答案:

答案 0 :(得分:0)

你可以在请求开始时设置connection.search_path,在加载任何对象之前,你会没事的。在我们的例子中,我们有一个Rack应用程序包装我们的rails应用程序,并根据传入域为我们进行此设置。