2011-03-07 75 views
0

在我們的rails 2.x應用程序中,數據庫連接的search_path取決於通過其聯繫應用程序的子域(基本上爲search_path = "production_"+subdomain)。由於每個連接都定義了search_path,並且數據庫連接是通過請求共享的,所以這是一個問題。我寧願不改變併發性,因爲顯而易見的原因,一次只提供一個請求。Rails + PostgreSQL:search_path取決於子域

那麼有沒有辦法將連接池中的數據庫連接分組並設置某種策略,只有適合的連接用於請求?或者有沒有辦法爲每個子域使用一個連接池(在超時後池會自動丟棄)?爲每個子域啓動一個rails實例是沒有選擇的,因爲可能會有很多閒置的子域(這是某種親子賬戶,您在子域和自己的「世界」中與某些表中的其他站點不同)。

這是什麼問題的最佳解決方案?

回答

0

你可以在請求的開始處設置connection.search_path,在加載任何對象之前,你會沒事的。在我們的例子中,我們有一個Rack應用程序,用於封裝我們的導軌應用程序,並根據傳入域爲我們執行此設置。