2009-09-19 74 views
1

我正在計劃一個Catalyst應用程序,它將部署在多個服務器上。它將由支持人員在內部使用,以控制在這些服務器上運行的操作系統的各個方面。如何爲不同的服務器配置Catalyst應用程序?

該應用程序將在每臺服務器上以相同的方式運行,除了有限的站點特定行爲。某些操作僅適用於某些服務器,某些操作在其他服務器上的操作將有所不同。

是否有任何可識別的設計模式/實踐可以實現Catalyst應用程序的特定於站點的自定義?

我目前正在考慮在應用程序旁部署一個站點配置文件,該文件將用於確定要啓用的操作,並設置控制其他操作行爲的參數。理想情況下,這個定製會在應用程序被mod_perl(Apache2)加載時發生 - 但我不確定這是否可能。

任何建議,歡迎!

回答

4

Catalyst::Plugin::ConfigLoader有代碼來幫助您以MYAPP_CONFIG_LOCAL_SUFFIX環境變量的形式幫助您進行特定於站點的配置。由於控制器是組件,並且配置可用於setup_components時間,所以在編譯控制器時,您可以通過動作註冊完成所需的任何操作。沒有太多的預先推出,因爲每個人的要求是如此不同,但它並不是特別困難,並且有郵件列表上的建議。

+0

這聽起來很接近我想要的。舉一個更具體的例子,我想在編譯期間設置根視圖模板,而不是在我的控制器操作中進行if-test。我將不得不通過它的聲音閱讀setup_components。 – aaa90210

0

您可以根據$c->req->host的值設置模板或在控制器中具有條件行爲。

0

我總是使用$HOSTNAME$USER的唯一組合來定義要加載的特定配置文件,例如,

conf => "my_app_${hostname}_${user}.conf" 
相關問題