[Catalyst] connection info and Catalyst::Model::DBIC::Schema

Alan Humphrey alan.humphrey at comcast.net
Fri Aug 4 01:30:28 CEST 2006


Alan Humphrey wrote:
> I feel that I'm missing something obvious, but the penny hasn't dropped.
> Hope you all can help.
> 
> Goal: use a DBIx::Class schema defined outside the Catalyst app name
space.
> 
> Using: Catalyst::Model::DBIC::Schema
> 
> Problem: I have to define the connection information in my Catalyst
> definition:
> 
> package Engoi::Model::Schema;
> 
> use strict;
> use base 'Catalyst::Model::DBIC::Schema';
> 
> __PACKAGE__->config(
>     schema_class => 'Engoi::Schema::EngoiDbDev',
>     connect_info => [
>         'dbi:Pg:dbname=engoidev',
>         'user',
>         'xxxx',
>         
>     ],
> );
> 
> If I comment out the connection info I get the following error on app
> startup:
> 
> Couldn't instantiate component "Engoi::Model::Schema", "Can't locate
object
> method "storage" via package "Engoi::Schema::EngoiDbDev"
> 
> Engoi::Schema::EngoiDbDev look like:
> 
> package Engoi::Schema::EngoiDbDev;
> 
> use strict;
> use warnings;
> use Engoi::Schema::EngoiDb;
> 
> my @conn_info = (
>         'dbi:Pg:dbname=engoidev',
>         'user',
>         'xxxx',
>     { RaiseError => 1, PrintError => 0, ShowErrorStatement => 1,
TraceLevel
> => 0 }
> );
> 
> Engoi::Schema::EngoiDb->compose_connection( __PACKAGE__, @conn_info );

compose_connection uses DB.pm which is deprecated and will be removed before
1.0.

You want __PACKAGE__->connection(@conn_info); just subclassing the main
schema 
should be sufficient, no?

Yep.  That was a from a little cut and paste from another (older) app.  In
fact, since the only difference between the schemas is which database they
connect to (production vs. dev) I can use Brandon's suggestion and skip the
subclassing altogether.




More information about the Catalyst mailing list