Re: "Dynamic" database handles?
[prev]
[thread]
[next]
[Date index for 2005/01/23]
Well, I came up with:
##########
package OOPC::DB;
use base 'Class::DBI';
our $dbh;
sub db_Main{
return $dbh;
}
#CDBI package definitions here.
1;
And then in my CGI::Application module:
package OOPC::Settings::Manage;
use strict;
use warnings;
use OOPC::DB;
use base 'CGI::Application';
sub setup{
my $self=shift;
my $dbh=$self->param('dbh');
$OOPC::DB::dbh=$dbh;
$self->start_mode('list_namespaces');
$self->mode_param($self->param('settings')->{Global}->{run_mode_param});
$self->run_modes(
list_namespaces=>'list_namespaces',
is_denied=>'is_denied',
AUTOLOAD=>'list_namespaces'
);
}
1;
But I'm worried about the whole "variable will stay shared" error that
can happen when you use "global" variables with mod_perl.
Do folks think this will this be mod_perl safe? Something about this
just feels wrong.
-DJCP
On Sun, 2005-01-23 at 00:20 +0000, Matt S Trout wrote:
> On Sat, Jan 22, 2005 at 06:44:30PM -0500, Daniel Collis Puro wrote:
> > I'm looking to use Class::DBI in an application where the DB connection
> > info is passed in at run time. I'm building a generic e-commerce system
> > around CGI::Application, HTML::Template and a few of my other favorite
> > modules.
> >
> > The idea is I'd set up the relationships between tables in separate
> > classes via Class::DBI and then use the CDBI classes in my
> > CGI::Application modules along with Class::DBI::AsForm.
> >
> > I must be dense, because I can't figure out a clean way to pass a DBI
> > handle or DSN info at run time, and I want this system to be generic
> > enough to completely avoid hard-coding database connections.
> >
> > What am I missing? This is all meant to run under mod_perl, so please
> > keep this in mind.
>
> I'm doing the same sort of thing at the moment; contact me off-list if you're
> interested in a technology share.
>
> Meantime, try overriding the db_Main method like so -
>
> package CDBI::BaseClass;
>
> #__PACKAGE__->connection(...) Don't need this now
>
> sub db_Main {
> return DBI->connect_cached(...); # Insert runtime DSN selection here
> }
>
--
Dan Collis Puro
Chief Engineer
GeekUprising Internet Consultants
http://www.geekuprising.com
dan@xxxxxxxxxxxx.xxx
781-775-1338
|
(message missing)
|