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

Cedric Boudin cedric at dreamgnu.com
Tue Dec 11 19:38:26 GMT 2007


Thank a lot
That did the trick,

some time the easiest ways are the better,

I'll immediatly make a annotation on CPAN

cedric

Jason Kohles wrote:
> 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
>
>
>
> _______________________________________________
> List: Catalyst at lists.scsys.co.uk
> Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
> Searchable archive:
> http://www.mail-archive.com/catalyst@lists.rawmode.org/
> Dev site: http://dev.catalyst.perl.org/




More information about the Catalyst mailing list