2010-01-13 73 views
1

我想通過更多的虛擬主機訪問一個軌道應用程序。不同的虛擬主機在數據庫,圖像,樣式表和某些情況下的視圖佈局上會有所不同。對於通過不同的虛擬主機訪問的一個rails代碼來實現爲多個應用程序提供服務,您有何建議?更多虛擬主機在一個軌道應用程序

編輯

指定什麼我想象的更好,我添加這些:

  • 我寧願軌道區分哪個DB /風格/圖像/佈局具有基於主機名來使用。
  • 可能有不同的rails應用程序正在運行,但在相同的代碼上方。
  • Db連接可能在應用程序啓動期間建立。

我想知道rails應用程序應該識別哪個主機?它應該在中間件上,在引導腳本還是其他地方?

回答

0

我不知道鐵軌,但我知道我會怎麼做在Django。我懷疑核心邏輯是不同的。

我會告訴服務器什麼主機接受(包括通配符,如果我想要的),然後告訴我的webapp看看請求域(從web服務器傳遞)。

如何從這一點改變各種事情取決於你。

1

對於數據庫:

可以在路線設置一個特殊的參數,如:

/:客戶機/:控制器/:動作

,然後使用PARAMS [:客戶]至手動調節的ActiveRecord :: Base.establish_connection(...) 從的ApplicationController的before_filter(我這樣做了它的工作原理)

看到這裏的示例代碼:ruby-forum

對於樣式表,圖像...: 使用apache o nginx虛擬主機來分隔公共/圖像和其他人(因爲你應該這樣做直接提供服務而不使用rails),並從那裏選擇它們。 (你可能需要mod_rewrite o相當於這個)

佈局可能會有點棘手,最好有一個普通的erb根據params [:client]智能加載partials。

我希望它有幫助。

+0

謝謝@Fer的回答。我不希望在URL中顯示客戶端名稱。我會很高興看到rails從主機名解析客戶端。然而,發散/公共聲音很有趣。我應該檢查一下。 – fifigyuri 2010-01-13 17:57:03

相關問題