将会有一个 Catalyst 应用程序和一些命令行脚本。它们应该共享相同的配置。
我认为需要一些功能...
分层配置以清晰地维护不同的开发和生产设置。
我想定义“全局”配置一次(例如,results_per_page => 20),并且可以被我的开发/生产配置继承但又可以覆盖。
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
当我将项目部署到新服务器或者分支/复制到其他地方(例如,新的开发实例)时,我希望能(仅一次)设置使用哪个配置集/文件,然后所有未来的更新都是自动的。
我想这可以通过符号链接来实现:
git clone example.com:/var/git/my_project . # or any equiv vcs
cd my_project/etc
ln -s live.config to_use.config
未来,随着科技的发展,IT技术将会变得越来越重要。
git pull # or any equiv vcs
我还希望有类似于FindBin的东西,这样我的配置文件就可以使用绝对路径或相对于当前部署的路径。鉴于此:
/home/me/development/project/
bin
lib
etc/config
其中/home/me/development/project/etc/config包含以下内容:
tmpl_dir: templates/
当我的Perl代码查找tmpl_dir配置时,它会得到:
/home/me/development/project/templates/
但是在实际部署中:
/var/www/project/
bin
lib
etc/config
同样的代码会神奇地返回相同的结果。
/var/www/project/templates/
在配置中应该尊重绝对值,以便:
apache_config: /etc/apache2/httpd.conf
无论如何,都会返回“/etc/apache2/httpd.conf”。
与FindBin风格的方法不同,另一种选择是允许以其他配置值为基础定义配置值。
tmpl_dir: $base_dir/templates
我也想要一匹小马 ;)