Nếu tôi có dự án Greenfield, mô hình cấu hình dựa trên Perl tốt nhất để sử dụng là gì?Mô-đun Perl tốt nhất cho cấu hình phân cấp và kế thừa là gì?
Sẽ có ứng dụng Catalyst và một số tập lệnh dòng lệnh. Họ nên chia sẻ cùng một cấu hình.
Một số tính năng tôi nghĩ mình muốn ...
Cấu hình phân cấp để duy trì rõ ràng các cài đặt phát triển và sống khác nhau.
Tôi muốn xác định cấu hình "chung" một lần (ví dụ: results_per_page => 20), có những cấu hình được kế thừa nhưng có thể ghi đè bởi các cấu hình dev/live của tôi.
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
Khi tôi triển khai dự án sang máy chủ mới, hoặc chia nhánh/sao chép nó ở đâu đó mới (ví dụ: cá thể phát triển mới), tôi muốn (chỉ một lần) đặt tập/tập cấu hình nào sử dụng, và sau đó tất cả các bản cập nhật trong tương lai đều tự động.
tôi cho rằng điều này có thể đạt được với một liên kết tượng trưng:
git clone example.com:/var/git/my_project . # or any equiv vcs
cd my_project/etc
ln -s live.config to_use.config
Sau đó, trong tương lai
git pull # or any equiv vcs
Tôi cũng thích một cái gì đó giống như FindBin, do đó configs tôi có thể hoặc sử dụng đường dẫn tuyệt đối hoặc tương đối so với triển khai hiện tại. Với
/home/me/development/project/
bin
lib
etc/config
nơi/home/me/phát triển/dự án/etc/config chứa:
tmpl_dir: templates/
khi mã perl tôi nhìn lên cấu hình tmpl_dir nó sẽ nhận được:
/home/me/development/project/templates/
Nhưng về triển khai trực tiếp:
/var/www/project/
bin
lib
etc/config
Cùng mã kỳ diệu sẽ trở
/var/www/project/templates/
giá trị tuyệt đối trong cấu hình nên được vinh danh, do đó:
apache_config: /etc/apache2/httpd.conf
sẽ quay trở lại "/etc/apache2/httpd.conf" trong mọi trường hợp.
Thay vì cách tiếp cận kiểu FindBin, một giải pháp thay thế có thể là cho phép xác định giá trị cấu hình theo các giá trị cấu hình khác?
tmpl_dir: $base_dir/templates
Tôi cũng thích một con ngựa;)