Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

Re^6: Change DBI database on runtime

by miguelele (Beadle)
on Nov 15, 2011 at 20:36 UTC ( #938247=note: print w/ replies, xml ) Need Help??


in reply to Re^5: Change DBI database on runtime
in thread Change DBI database on runtime

Great!, now it works perfectly , but it is not like the docs on Factory::PerRequest. I can even comment out the '#use base 'Catalyst::Model::Factory::PerRequest'; line and it keeps working. Isn't it strange?

This is what I understand reading my code:
- The basic package config has empty values. But they must be present for the first load of the app, so Catalyst know what it is.
- The sub ACCEPT_CONTEXT return a new object from PWC::Schema every time this model is requested.
- So I am not instantiating anything else but this very class, with just one contextual variable that changes from each request.

Am I right? Is it safe?

package PWC::Model::MYDB; use strict; use warnings; use base 'Catalyst::Model::DBIC::Schema'; #use base 'Catalyst::Model::Factory::PerRequest'; __PACKAGE__->config( schema_class => 'PWC::Schema', connect_info => { dsn => '', user => '', password => '', AutoCommit => q{1}, } ); sub ACCEPT_CONTEXT { my($self, $c) = @_; my $db = $c->engine->env->{THEALIAS}; #From environment variable i +n Fastcgi/Nginx my $new = $self->meta->new_object( schema_class => 'PWC::Schema', connect_info => { dsn => 'dbi:mysql:' . $db . ':the_host.com', user => 'the_user', password => 'the_password', AutoCommit => q{1}, } ); return $new; } 1;


Comment on Re^6: Change DBI database on runtime
Select or Download Code
Re^7: Change DBI database on runtime
by zwon (Monsignor) on Nov 16, 2011 at 12:33 UTC

    Yes, you're right, I think Catalyst::Model::Factory::PerRequest is not supposed to be extended by replacing ACCEPT_CONTEXT method, it's more like it should extend your class. I recommend you reuse caching from it though, note that it doesn't build new object for the same context twice. Otherwise I think everything is correct.

      Thank you for your assistance!
      I am happy just not doing stupid things in this stage. Optimization will come later.

      Regards

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://938247]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others taking refuge in the Monastery: (7)
As of 2014-12-28 07:14 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Is guessing a good strategy for surviving in the IT business?





    Results (179 votes), past polls