[Catalyst] Gluing with Catalyst::Model::Adaptor

Jason Kohles email at jasonkohles.com
Tue Dec 11 18:18:43 GMT 2007


On Dec 11, 2007, at 12:16 PM, Cedric Boudin wrote:

> I've been trying to push out of my C::Classes all this resutset stuff
> that I rather see in the DBIx classes where they belong.
> What did I do:
>
> ------------------
> 2)In the Myapp::M::Db.pm file where I configure the DBix connection
> stuff I added
> -------------------------------
> package CatalEgo::M::CatalEgoDb;
> ++use base 'Catalyst::Model::Adaptor';
>
> __PACKAGE__->config(
>    schema_class => 'CatalEgo::Db',
>    connect_info => [
>
>        'dbi:Pg:dbname=.....',
>        'USER,
>        'passwd',
>
>    ],
> );
> ++__PACKAGE__->config( class => 'CatalEgo::Db' );
>

If you take the configuration out of the model, then you need to put  
it somewhere else in order to be able to use it...

> Is it possible just to glue my whole DBIx::Model in one go into  
> catalyst
> so that I can use it as I use it as standalone outside the catalkyst
> environment.
>
Yes, and if your requirement is just to be able to use your  
DBIx::Class classes without Catalyst, then you don't even need  
Catalyst::Model::Adapter, you just need to move the configuration  
stuff into the database class...

This is how I do it...

# The database main class
package MyApp::DB;
use base qw( DBIx::Class );
__PACKAGE__->load_classes();
__PACKAGE__->connection(
	'DBI:Pg:dbname=...',
	'user', 'password',
	{ AutoCommit => 1 },
);
1;

# The catalyst model
package MyApp::Web::Model::DB;
use base qw( Catalyst::Model::DBIC::Schema );
__PACKAGE__->config( schema_class => 'MyApp::DB' );
1;


This way, any other code that needs to use it can, just by doing:
use MyApp::DB;

my $schema = MyApp::DB->connect;

If you don't want the username and password to be hardcoded into the  
script, you can still do the same thing, but other code that needs to  
use it will have to pass the authentication information when calling - 
 >connect.

-- 
Jason Kohles, RHCA RHCDS RHCE
email at jasonkohles.com - http://www.jasonkohles.com/
"A witty saying proves nothing."  -- Voltaire





More information about the Catalyst mailing list