Jeśli mam projekt typu greenfield, jaki jest najlepszy moduł konfiguracyjny oparty na Perl?Jaki jest najlepszy moduł Perla do hierarchicznej i dziedzicznej konfiguracji?
Pojawi się aplikacja Catalyst i niektóre skrypty wiersza poleceń. Powinny mieć tę samą konfigurację.
Niektóre funkcje myślę, że chcę ...
hierarchiczne konfiguracje do czysto utrzymać inny rozwój i ustawień na żywo.
Chciałbym raz zdefiniować konfiguracje "globalne" (np. Results_per_page => 20), mieć te odziedziczone, ale można je zastąpić moimi konfiguracjami dev/live.
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
Kiedy wdrożyć projekt na nowy serwer, lub oddział/widelec/skopiuj go gdzieś nowy (na przykład nowa instancja rozwój), chcę (jeden jedyny raz) zestaw, który zestaw konfiguracyjny/plik używać, a następnie wszystkie przyszłe aktualizacje są automatyczne.
bym przewidzieć można to osiągnąć z dowiązania symbolicznego:
git clone example.com:/var/git/my_project . # or any equiv vcs
cd my_project/etc
ln -s live.config to_use.config
Wtedy w przyszłym
git pull # or any equiv vcs
Chciałbym również, że jak coś podobnego do FindBin, więc możliwe, że moje configs albo użyj ścieżek bezwzględnych, albo względem bieżącego wdrożenia. Biorąc
/home/me/development/project/
bin
lib
etc/config
gdzie/home/ja/rozwój/projekt/etc/config zawiera:
tmpl_dir: templates/
kiedy mój kod Perl wygląda konfigurację tmpl_dir będzie to dostać:
/home/me/development/project/templates/
Ale w wersji na żywo:
/var/www/project/
bin
lib
etc/config
Ten sam kod będzie magicznie powrócić
/var/www/project/templates/
wartościach bezwzględnych w config powinien być zaszczycony, że tak:
apache_config: /etc/apache2/httpd.conf
wróci „/etc/apache2/httpd.conf” we wszystkich przypadkach.
Zamiast podejścia opartego na FindBin, alternatywą może być zdefiniowanie wartości konfiguracyjnych w kontekście innych wartości konfiguracyjnych?
tmpl_dir: $base_dir/templates
że również jak pony I;)