[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