Как настроить приложение Catalyst для разных серверов?

Я планирую приложение Catalyst, которое будет развернуто на нескольких серверах. Он будет использоваться внутренним персоналом службы поддержки для управления аспектами операционной системы, работающей на этих серверах.

Приложение будет работать одинаково на каждом сервере, за исключением ограниченного количества действий, специфичных для сайта. Некоторые действия будут применяться только к некоторым серверам, а некоторые действия будут вести себя иначе на других серверах.

Существуют ли какие-либо общепризнанные шаблоны/практики проектирования, которые позволяют настраивать приложение Catalyst для конкретного сайта?

В настоящее время я думаю о развертывании файла конфигурации сайта вместе с приложением, который будет использоваться для определения того, какие действия следует включить, и установки параметров, управляющих поведением других действий. В идеале эта настройка должна происходить, когда приложение загружается с помощью mod_perl (Apache2), но я не уверен, что это вообще возможно.

Любые предложения приветствуются!


person aaa90210    schedule 19.09.2009    source источник


Ответы (3)


Catalyst::Plugin::ConfigLoader содержит код, который поможет вам с настройкой конкретного сайта в виде переменной среды MYAPP_CONFIG_LOCAL_SUFFIX. Поскольку контроллеры являются компонентами, а конфигурация доступна в setup_components времени, вы можете делать любые глупости с регистрацией действий, когда ваш контроллер компилируется. Для этого не так много предварительных работ, потому что требования у всех очень разные, но это не очень сложно, и советы можно найти в списке рассылки.

person hobbs    schedule 20.09.2009
comment
Это звучит близко к тому, что я хочу. Чтобы привести более конкретный пример, я хочу установить корневой шаблон представления во время компиляции, а не использовать if-test в своих действиях контроллера. Судя по звукам, мне придется прочитать о setup_components. - person aaa90210; 20.09.2009

Вы можете установить шаблоны или иметь условное поведение в контроллерах на основе значения $c->req->host.

person singingfish    schedule 19.09.2009

Я всегда использую уникальную комбинацию $HOSTNAME и $USER для определения конкретного загружаемого файла конфигурации, например.

conf => "my_app_${hostname}_${user}.conf"
person Kiffin    schedule 30.10.2009