[prev] [thread] [next] [lurker] [Date index for 2005/01/26]
While I'm quite happy with the $config as a global object thing, there
are a couple of things about the configuration system that I've come to
realise were bad hacks.
First up, the whole notion of creating lib/Siesta/Config.pm from a
template was batshit, or rather what it grew into was. The problem we
were trying to tackle, iirc, was the one of "hey, we'll have external
resources, and people will want to choose where to put them, so let's
let them do that at Makefile.PL time".
Then it grew so rather than containing one single path, it was paths
for everything, just in case you wanted to put your message templates
here, and your archives there.
Oh, and then we wanted to parameterise the database.
And thus was born the second cause of pain.
Because I'm a lazy guy, and really didn't want to specify things twice,
I wanted the database backed classes to use Class::DBI's set_up_table
introspection to set up the classes. But annoyingly, this has to
happen at compile time.
Of course, the problem with that is if you want to override the config
after that, which you typically do if you're taking command-line
parameters you have to perform all kinds of nasty to defer the compile
time of the database classes (witness nacho).
Oh, and thirdly I think AppConfig turned out to be something of a pup,
but that's possibly still down to the usage it got.
So, how to fix this? I think have a couple of options.
* have /etc/siesta.conf ~/.siesta.conf $ENV{SIESTA_CONF} all imported
and merged together, once, at compile time. nacho could cheat by
renaming itself nacho-real and having a new accomplice that just parses
the -f option and passes everything else through
* Lose set_up_table and replace it with some kind of mechanism for
parsing the DDL in Siesta::DBI to create the objects accessors. Or
steal a page out of Class::Persist's simple_db_spec method.
* I'm also mindful of not having two config files, as we now have with
Log::Log4perl. I have a hunch that I can inveigle siesta.* directives
into the same config file as Log4perl uses, which would be better, but
I need to read some docs or hack on it to know.
Opinions? Patches?
ps, I've rejoined the irc.perl.org #siesta channel and will be there
for as long as my interest holds. Get in fast...
--
Richard Clamp <richardc@{unixbeard.net,fotango.com}>
Generated at 02:00 on 09 Mar 2005 by mariachi 0.52