[Catalyst] Multiple DB, single instance of Cat

Matt S Trout dbix-class at trout.me.uk
Wed Sep 24 16:04:30 BST 2008


On Thu, Sep 11, 2008 at 11:58:31PM +0100, Nigel Stuckey wrote:
> Matt
> 
> I stand corrected on DBIx! Yes, indeed I mean DBIx::Class.
> 
> The code is in and works, but has a couple of issues. Firstly, it  
> creates new classes and carries out a DB connect every time there is  
> a request. Is there a way to make it more efficient by caching the  
> classes and DB connects once there is a successful authentication?

It should only be creating a new $schema object, see below.

No reasony you can't do

__PACKAGE__->mk_accessors('connection_cache');

and then set that to {} somewhere early and keep the $schema objects in
there.

I didn't do this in my example because (1) IT WAS A SIMPLE EXAMPLE (2)
writing caching code is simple, except you need to handle cache expiry
and stuff and I didn't have time to write example code for all of that :)
 
> Secondly, there are loads of 'ACCEPT_CONTEXT redefined' messages, one  
> per DB table defined to the DBIC model. When initialising, I have to  
> give the 'dynamic' model an initial configuration to allow Catalyst o  
> start.

Ah, the class creation and stuff shouldn't be happening. That's me being
silly, what you want to do is

my $new = bless({ %$self }, ref($self));

to bypass the initialisation phase.

> Once the code is working I will pop it on the wiki.

-- 
      Matt S Trout       Need help with your Catalyst or DBIx::Class project?
   Technical Director                    http://www.shadowcat.co.uk/catalyst/
 Shadowcat Systems Ltd.  Want a managed development or deployment platform?
http://chainsawblues.vox.com/            http://www.shadowcat.co.uk/servers/



More information about the Catalyst mailing list