Hi Folks First some code:
D:\Perl\site\lib\Monash\Rose\Morsecode\Base\DB.pm: ----<>8----- package Monash::Rose::MorseCode::Base::DB; use Rose::DB; our @ISA = 'Rose::DB'; # ----------------------------------------------- Rose::DB -> use_private_registry(); Rose::DB -> default_domain('windows'); Rose::DB->register_db ( domain => 'windows', type => 'default', driver => 'mysql', database => 'morsecode', host => 'localhost', username => 'root', password => 'pass', ); print __PACKAGE__, ". Called: default_domain. \n"; # ----------------------------------------------- 1; ----<>8----- D:\Perl\site\lib\Monash\Rose\Morsecode\Base\Object.pm: ----<>8----- package Monash::Rose::MorseCode::Base::Object; use base 'Rose::DB::Object'; use Monash::Rose::MorseCode::Base::DB; # ----------------------------------------------- sub init_db { print __PACKAGE__, ". About to call: Monash::Rose::MorseCode::Base::DB -> new(). \n"; # The value returned by this sub must be of type Rose::DB. # See Rose::DB::Object's docs for the object method db(). Monash::Rose::MorseCode::Base::DB -> new(); } # ----------------------------------------------- 1; ----<>8----- The generated module D:\Perl\site\lib\Monash\Rose\Morsecode\Faculty.pm: ----<>8----- package Monash::Rose::MorseCode::Faculty; use strict; use Monash::Rose::MorseCode::Base::Object; our @ISA = qw(Monash::Rose::MorseCode::Base::Object); __PACKAGE__->meta->table('faculty'); print __PACKAGE__, ". Called: meta->table. \n"; __PACKAGE__->meta->columns ( id => { type => 'integer', not_null => 1 }, name => { type => 'varchar', default => '', length => 255, not_null => 1 }, ); print __PACKAGE__, ". Called: meta->columns. \n"; __PACKAGE__->meta->primary_key_columns([ 'id' ]); print __PACKAGE__, ". Called: meta->primary_key_columns. \n"; __PACKAGE__->meta->initialize; print __PACKAGE__, ". Called: meta->initialize. \n"; 1; ----<>8----- ----<>8----- #!/usr/bin/perl # # Name: # test-generated-code.pl. use strict; use warnings; use Monash::Rose::MorseCode::Faculty; # ----------------------------------- my($faculty) = Monash::Rose::MorseCode::Faculty -> new(id => 1); $faculty -> load(); print "Faculty id => name: 1 => ", $faculty -> name(), ". \n"; ----<>8----- The output: ----<>8----- Monash::Rose::MorseCode::Base::DB. Called: default_domain. Monash::Rose::MorseCode::Faculty. Called: meta->table. Monash::Rose::MorseCode::Faculty. Called: meta->columns. Monash::Rose::MorseCode::Base::Object. About to call: Monash::Rose::MorseCode::Base::DB -> new(). Monash::Rose::MorseCode::Faculty. Called: meta->primary_key_columns. Monash::Rose::MorseCode::Base::Object. About to call: Monash::Rose::MorseCode::Base::DB -> new(). Monash::Rose::MorseCode::Faculty. Called: meta->initialize. Monash::Rose::MorseCode::Base::Object. About to call: Monash::Rose::MorseCode::Base::DB -> new(). Faculty id => name: 1 => DEPUTY V-C (INTERNATIONAL AFFAIRS). ----<>8----- The questions: o At the start of the first package I have: Rose::DB -> use_private_registry(); sort of as per the doc Rose::DB::Object::Tutorial sample code just under the heading TUTORIAL/Preface. Actually, that sample uses __PACKAGE__, not Rose::DB. When I tried using __PACKAGE__ I got this error: -----><8----- No database information found for domain 'windows' and type 'default' at d:/Perl/site/lib/Monash/Rose/MorseCode/Base/Object.pm line 16 Compilation failed in require at D:\Monash\morsecode\scripts\test-generated-code.pl line 9. BEGIN failed--compilation aborted at D:\Monash\morsecode\scripts\test-generated-code.pl line 9. Monash::Rose::MorseCode::Base::DB. Called: default_domain. Monash::Rose::MorseCode::Faculty. Called: meta->table. Monash::Rose::MorseCode::Faculty. Called: meta->columns. Monash::Rose::MorseCode::Base::Object. About to call: Monash::Rose::MorseCode::Base::DB -> new(). -----><8----- where line 16 is: Monash::Rose::MorseCode::Base::DB -> new(); So, why the error? o Why is init_db called three times? Is this meant to happen? -- Ron Savage [EMAIL PROTECTED] http://savage.net.au/index.html ------------------------------------------------------- This SF.Net email is sponsored by xPML, a groundbreaking scripting language that extends applications into web and mobile media. Attend the live webcast and join the prime developer group breaking into this new coding territory! http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642 _______________________________________________ Rose-db-object mailing list Rose-db-object@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/rose-db-object