2012-05-22 38 views
2

我即將在Ruby On Rails上構建multitenancy應用程序。每個客戶端都將通過YAML文件(或最終存儲在數據庫中的任何作品)進行自己的個性化配置。鑑於銷售過程和每個客戶端所需的配置數量,開發團隊將構建配置文件。期望的客戶數量少於100.使用Rails代碼覆蓋和多租戶服務

如何覆蓋特定客戶端的代碼(控制器,視圖,佈局)(即:每個客戶端有一個模塊?)這怎麼能在rails中完成?

+0

你有沒有考慮給每個客戶端自己的應用程序和數據庫?這將很容易部署和規模(以每個客戶端爲基礎)heroku –

+0

@Seamus Asbhere我並不真正關心這個具體應用的規模。對於目標市場,我們不可能有規模問題。即使我們這樣做了,我們也可以輕鬆地對數據庫進行分區。對於分解代碼庫,我認爲這樣做太過分了,你不覺得嗎? – Jimmy

+0

您可以將每個人從主分支的單獨部署中運行,直到任何一個客戶端需要定製爲止。你會爲該客戶創建一個分支。那麼您可以定期將主控合併回每個自定義分支。這比在模型,控制器,視圖等內部放置多個客戶定製更加可靠。 –

回答

1

您可以爲每個客戶和控制器內部的模塊動態地要求相應的模塊。假設您有current_user實例,那麼在ApplicationCOntroller中,可以使用before_filter加載實例變量@client_module,並且可以在控制器內部使用該變量來擴展控制器。 YOu可能會想要爲每個控制器的每個客戶端執行一個模塊,以使生活更輕鬆

0

如何使用路由進行此操作?

get ":client/:controller/:action/:id" 

研究routing from the outside in得到資源和命名空間的一些想法。