我正在计划一个Catalyst应用程序,它将部署在许多服务器上。它将由支持人员在内部使用,以控制在这些服务器上运行的操作系统的各个方面。
应用程序将在每台服务器上以相同的方式运行,除了有限的站点特定行为。某些操作仅适用于某些服务器,某些操作在其他服务器上的行为会有所不同。
是否有任何公认的设计模式/实践可以实现Catalyst应用程序的特定于站点的自定义?
我目前正在考虑在应用程序旁边部署站点配置文件,该文件将用于确定要启用的操作,并设置控制其他操作行为的参数。理想情况下,当mod_perl(Apache2)加载应用程序时会发生这种自定义 - 但我不确定这是否可能。
欢迎任何建议!
答案 0 :(得分:4)
Catalyst::Plugin::ConfigLoader有代码可以帮助您以MYAPP_CONFIG_LOCAL_SUFFIX
环境变量的形式进行特定于站点的配置。由于控制器是组件并且配置在setup_components
时可用,因此在编译控制器时,您可以通过操作注册执行任何您想要的任何操作。因为每个人的要求都是如此不同,所以没有预先准备好了,但这并不是特别难,并且可以在邮件列表中找到建议。
答案 1 :(得分:0)
您可以根据$c->req->host
的值在控制器中设置模板或具有条件行为。
答案 2 :(得分:0)
我总是使用$HOSTNAME
和$USER
的唯一组合来定义要加载的特定配置文件,例如。
conf => "my_app_${hostname}_${user}.conf"