Se si dispone di un progetto greenfield, quale è il modulo di configurazione basato su Perl con la migliore pratica da utilizzare?Qual è il miglior modulo Perl per la configurazione gerarchica ed ereditabile?
Ci sarà un'app Catalyst e alcuni script da riga di comando. Dovrebbero condividere la stessa configurazione.
Alcune caratteristiche penso che voglio ...
configurazioni gerarchiche per mantenere in modo pulito sviluppo diverso e le impostazioni dal vivo.
Mi piacerebbe definire una volta le configurazioni "globali" (ad es. Results_per_page => 20), avere quelle ereditate ma sovrascrivibili dalle mie dev/live configs.
Global:
results_per_page: 20
db_dsn: DBI:mysql;
db_name: my_app
Dev:
inherit_from: Global
db_user: dev
db_pass: dev
Dev_New_Feature_Branch:
inherit_from: Dev
db_name: my_app_new_feature
Live:
inherit_from: Global
db_user: live
db_pass: secure
Quando schiero un progetto per un nuovo server, o il ramo/forchetta/copia da qualche parte nuova (ad esempio, una nuova istanza di sviluppo), voglio (una sola volta) insieme che set di configurazione/file utilizzare e quindi tutti gli aggiornamenti futuri sono automatici.
avrei prevedo Ciò potrebbe essere realizzato con un link simbolico:
git clone example.com:/var/git/my_project . # or any equiv vcs
cd my_project/etc
ln -s live.config to_use.config
Poi in futuro
git pull # or any equiv vcs
mi piacerebbe anche qualcosa che di simile a FindBin, in modo che i miei file di configurazione può utilizzare i percorsi assoluti o relativi alla distribuzione corrente. Dato
/home/me/development/project/
bin
lib
etc/config
dove/home/me/sviluppo/progetto/etc/config contiene:
tmpl_dir: templates/
quando il mio codice Perl guarda la configurazione tmpl_dir otterrà:
/home/me/development/project/templates/
Ma sulla distribuzione dal vivo:
/var/www/project/
bin
lib
etc/config
Lo stesso codice avrebbe magicamente tornare
/var/www/project/templates/
valori assoluti nella configurazione dovrebbe essere onorato, in modo tale che:
apache_config: /etc/apache2/httpd.conf
sarebbero tornati "/etc/apache2/httpd.conf" in tutti i casi.
Piuttosto che un approccio in stile FindBin, un'alternativa potrebbe essere quella di consentire la definizione dei valori di configurazione in termini di altri valori di configurazione?
tmpl_dir: $base_dir/templates
Mi piacerebbe anche un pony;)