2009-09-19 7 views
1

Je planifie une application Catalyst, qui sera déployée sur un certain nombre de serveurs. Il sera utilisé en interne par le personnel de support pour contrôler les aspects d'un système opérationnel qui s'exécute sur ces serveurs.Comment puis-je configurer une application Catalyst pour différents serveurs?

L'application fonctionnera de la même manière sur chaque serveur, sauf pour un nombre limité de comportements spécifiques au site. Certaines actions ne s'appliqueront qu'à certains serveurs et certaines actions se comporteront différemment sur d'autres serveurs. Y a-t-il des modèles/pratiques de conception reconnus qui permettent la personnalisation spécifique au site d'une application Catalyst?

Je pense actuellement à déployer un fichier de configuration de site à côté de l'application, qui sera utilisé pour déterminer les actions à activer, et définir les paramètres qui contrôlent le comportement d'autres actions. Idéalement, cette personnalisation se produirait lorsque l'application serait chargée par mod_perl (Apache2) - mais je ne suis pas sûr que ce serait possible.

Toutes les suggestions sont les bienvenues!

Répondre

4

Catalyst::Plugin::ConfigLoader a du code pour vous aider avec la configuration spécifique au site sous la forme de la variable d'environnement MYAPP_CONFIG_LOCAL_SUFFIX. Puisque les contrôleurs sont des composants et que la configuration est disponible au setup_components, vous pouvez faire n'importe quelle folie avec l'enregistrement de l'action lorsque votre contrôleur est compilé. Il n'y a pas beaucoup de pré-roll pour cela, parce que les exigences de chacun sont si différentes, mais ce n'est pas exceptionnellement difficile, et il y a des conseils à trouver sur la liste de diffusion.

+0

Cela semble proche de ce que je veux. Pour donner un exemple plus concret, je veux définir le modèle de vue racine pendant la compilation, plutôt que d'avoir un if-test dans mes actions de contrôleur. Je vais devoir lire sur setup_components par les sons de celui-ci. – aaa90210

0

Vous pouvez définir des modèles ou avoir un comportement conditionnel dans les contrôleurs en fonction de la valeur $c->req->host.

0

J'utilise toujours la combinaison unique de $HOSTNAME et $USER pour définir le fichier de configuration spécifique à charger, par ex.

conf => "my_app_${hostname}_${user}.conf" 
Questions connexes