[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