Matt S Trout wrote:
That does not work, because otherwise C::DBIC::Schema complains. Brandon explains why in a post before. I just set it with connect_info that actually does try to connect to a non-existing DB. What remains is just one warning in the error log while firing up the apache server, which is a little annoying, but I can live with that. The real connect_info is set during the ACCEPT_CONTEXT-call now.Andreas Dembach wrote: OK, that's good news for us, if caching is no problem from your point of view. Now that I understand what happens, I could construct our problem in a little script: ===================== #!/usr/bin/perl use strict; use DB::Main; my @all_artists = (); my $schema1 = DB::Main->connect('DBI:Pg:database=test1;host=localhost', 'user', 'pass' ); my $schema2 = DB::Main->connect('DBI:Pg:database=test2;host=localhost', 'user', 'pass'); @all_artists = $schema1->resultset('Artist')->all; foreach my $artist ( @all_artists ) { print "Queried from test1: " . $artist->name, "\n"; } @all_artists = $schema2->resultset('Artist')->all; foreach my $artist ( @all_artists ) { print "Queried from test2: " . $artist->name, "\n"; } @all_artists = get_resultset('artist')->all; foreach my $artist ( @all_artists ) { print "Queried from test1: " . $artist->name, "\n"; } sub get_resultset { my $class = shift; return DB::Main->connect('DBI:Pg:database=test2;host=localhost', 'user', 'pass')->resultset($class); } exit 0; ===================== which results in: ===================== Queried from test1: Bar from test1 Queried from test2: Foo from test2 DBIx::Class::Schema::resultset(): Can't find source for artist at dbix-class-test.pl line 31 ===================== In our app we have put such a get_resultset() method in our schema-class, because we thought it'd be nice to have all DB-related stuff as central as possible. Since our app is pretty large, it was not directly obvious that the schema gets lost at this point. You might put a warning in the docs about this behaviour, imho it's a little counter-intuitive. Big thanks anyway. Andreas -- ----------------------------------------------------------------- Dembach Goo Informatik GmbH & Co. KG Andreas Dembach fon +49-221-801 483 0 Rathenauplatz 9 fax +49-221-801 483 20 D-50674 Cologne emergency +49-180-50 50 70 919 Germany smtp ad +at+ dg-i +dot+ net pgp fingerprint 25C2 8C94 015A E92C 3C67 E9B7 2E39 6FFC 277D 6700 |
_______________________________________________ List: http://lists.rawmode.org/cgi-bin/mailman/listinfo/dbix-class Wiki: http://dbix-class.shadowcatsystems.co.uk/ IRC: irc.perl.org#dbix-class SVN: http://dev.catalyst.perl.org/repos/bast/trunk/DBIx-Class/ Searchable Archive: http://www.mail-archive.com/[email protected]/
