in reply to The Moose, dbh class attribute, mod_perl handler and a lost SQL connection

I hate answering a question that I front-paged but it's been hours with no response ... so here goes ... I would probably change dbh from an attribute to a method and then use DBI::connect_cache. That way you can ensure you have a live connection before attempting to use it.

class_has 'db' => (is => 'rw',isa => 'Str', default => 'theDB'); class_has 'port' => (is => 'rw',isa => 'Int', default => 3306); class_has 'host' => (is => 'rw',isa => 'Str', default => '127.0.0.1'); class_has 'user' => (is => 'rw',isa => 'Str', default => 'theUSER'); class_has 'pwd' => ( s => 'rw',isa => 'Str', default => 'thePASS'); sub dbh { my $self = shift; my $dsn = 'DBI:mysql:' . GSM::SQLConnection->db . ';host=' . GSM::SQLConnection->host . ';port=' . GSM::SQLConnection->port; return DBI->connect_cached( $dsn, GSM::SQLConnection->user, GSM::SQLConnection->pwd ); } no Moose; no MooseX::ClassAttribute; __PACKAGE__->meta()->make_immutable(); ... my $sth = SQLConnection->dbh()->prepare( ... )

-derby
  • Comment on Re: The Moose, dbh class attribute, mod_perl handler and a lost SQL connection
  • Download Code

Replies are listed 'Best First'.
Re^2: The Moose, dbh class attribute, mod_perl handler and a lost SQL connection
by ZAmonk (Novice) on Oct 08, 2009 at 07:14 UTC
    Thank you, i think i'll use both suggestions:
    sub dbh { ... return DBIx::Connector->connect($dsn,...); }