Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic

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 . '', user => 'the_user', password => 'the_password', AutoCommit => q{1}, } ); return $new; } 1;

Replies are listed 'Best First'.
Re^7: Change DBI database on runtime
by zwon (Abbot) 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.


Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://938247]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others contemplating the Monastery: (8)
As of 2017-02-20 20:34 GMT
Find Nodes?
    Voting Booth?
    Before electricity was invented, what was the Electric Eel called?

    Results (302 votes). Check out past polls.