From: Harald J. <ha...@oo...> - 2006-08-30 22:57:45
|
Crawford Currie writes: > [...] >>>Added: >>> twiki/branches/TWikiRelease04x00/lib/TWiki/Config.pm >>>Modified: >>> twiki/branches/TWikiRelease04x00/lib/TWiki.pm >>> twiki/branches/TWikiRelease04x00/tools/MANIFEST >>>Log: >>>Item2826: Extract reading of config files into a module to facilitate benchmarking >>> >>Good idea! But shouldn't that same module be used by *everything* that >>reads the config (e.g =configure=)? >> > There's another reason I want this; when I was rewriting configure, I > moved all the "TWiki.cfg specific" stuff into a single module, on the > assumption that someone might some day want to write - for example - > YAML or XML versions of the config DB. No specific plans, just trying to > keep stuff consistently pluggable. To be honest, I deliberately wanted to stay out of the way of the configure refactoring right now. * TWiki.pm needs a method to pull in configuration data reasonably fast, since this is done for every request (unless a persistent interpreter is in place). Both filenames and format have been hardwired into TWiki.pm, and now are in TWiki::Config.pm. * The SVN configure code reads the configuration in TWiki/Configure/Checkers/BasicSanity.pm, and probably somewhere in TWiki/Configure/TWikiCfg.pm (though I failed to spot the line up to now). Neither of those looks suitable for the simple needs of TWiki.pm, which boils down to "fill %TWiki::cfg" - without need for params, nor objects, nor the bunch of modules used by TWikiCfg.pm. * So, a new subroutine was needed anyway. I agree that I could/should have put it into the TWiki/Configure directory, maybe as TWiki/Configure/TWikiCfg/ReadConfig.pm? BTW, is there a Codev topic to describe and discuss the rewrite (other than the extensions installer)? I have a faint feeling that the new treatment of LocalSite.cfg is calling for trouble: Currently (i.e. up to 4.0.4) LocalSite.cfg is rather simple, and it is tempting for an admin to add custom code there. Plugins (I know one case of TWiki:Plugins/LoginNameAliasesPlugin) may need a global variable set in the config files, and I've always used LocalSite.cfg instead of TWiki.cfg for that. In TWikiRelease04x00 SVN, LocalSite.cfg is written from scratch each time, retaining only the values from %TWiki::cfg, so LoginNameAliasesPlugin will stop to work after each invocation of configure. -- Cheers, haj |