J'utilise CGI :: Application sur mod_perl avec DBIx :: Class et j'aimerais avoir quelque chose comme new définir un nouveau schéma dbic sur instanciation. Jusqu'à présent, je n'ai pas réussi à le faire fonctionner. La chose la plus proche à laquelle je suis arrivé est une superclasse qui a une méthode connect() qui retourne un nouvel objet, mais je préférerais qu'il soit déjà connecté et instancié.Comment avoir une DBIx :: Class persistante dans CGI :: Application avec mod_perl?
J'apprécierais vraiment toutes les pensées du tout.
Merci!
Note: Ok, donc évidemment pas encore d'aide, mais, en attendant, j'ai fait un accesseur qui instancie paresseusement DBIx :: Class, donc ça pourrait être un peu mieux. Check it:
sub schema {
my $self = shift;
unless ($self->{schema}) {
$self->{schema} = ACD::Model->connect(@{$self->cfg->{$ENV{MODE}}->{connect_params}});
}
return $self->{schema};
}
et puis bien sûr l'utiliser, vous feriez quelque chose comme:
$self->schema->resultset('Foo')->find(1234);
Je n'ai pas de réponse cohérente pour vous ... mais je pense que c'est un hack que vous voulez éliminer. "$ self" ne devrait pas être responsable de la gestion de la connexion à la base de données; vous devriez instancier la connexion à la base de données "ailleurs" et la passer ensuite aux objets qui en ont besoin. (Des modules comme Bread :: Board rendent cela vraiment facile.) – jrockway