Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation
 
PerlMonks  

Re: custom $dbh with Rose::DB?

by Anonymous Monk
on Nov 05, 2006 at 09:32 UTC ( #582293=note: print w/ replies, xml ) Need Help??


in reply to custom $dbh with Rose::DB?
in thread Why did DBIC overtake CDBI?

$db->dbh( $dbh );


Comment on Re: custom $dbh with Rose::DB?
Download Code
Replies are listed 'Best First'.
Re^2: custom $dbh with Rose::DB?
by siracusa (Friar) on Nov 06, 2006 at 01:38 UTC
    Right. Just make sure that the driver() of the $db is the same as the driver of the $dbh (i.e., don't try to put a Postgres $dbh into a Rose::DB object whose driver is "mysql")
      using $db->dbh as a setter isn't documented, but this approach sounds reasonable if i can get it to work.

      this is my test script so far, which is not working:

      use DBI; use Rose::DB; my $dbh = DBI->connect( 'DBI:mysql:database=mydb', 'user', 'pass' ); my $rdb = Rose::DB->new( driver => "mysql" ); $rdb->dbh( $dbh ); print "still here\n";
      produces:
      No database information found for domain 'default' and type 'default' at rdttest.pl line 6
      
      what do i do here instead if i don't want to do the register_db stuff(or can't, because in the non-simplified case i don't have the DSN, only a $dbh that was exported from elsewhere) ?

      update:

      it looks like this works, clunky as it seems:

      use base qw( Rose::DB ); __PACKAGE__->use_private_registry; __PACKAGE__->register_db( driver => 'mysql', database => 'fake', host => 'fake', username => 'fake', password => 'fake' ); package My::RDBO::User; use base qw( Rose::DB::Object ); use DBI; __PACKAGE__->meta->setup( table => 'user', columns => [qw( id username password email name )], pk_columns => 'id', unique_key => 'username', ); sub init_db { my $dbh = DBI->connect( 'DBI:mysql:database=mydb', 'user', 'pass' +); my $rdb = My::RDB->new; $rdb->dbh($dbh); return $rdb; } package main; my $u = My::RDBO::User->new(id => 1); $u->load; print("$_ => ", $u->$_, "\n") foreach $u->meta->columns;
        using $db->dbh as a setter isn't documented, but this approach sounds reasonable if i can get it to work.

        Whoops, yeah, I'll go document that now. Anyway, as you discovered, you have to register at least one data source to instantiate a Rose::DB object. You don't actually have to provide all the information that you did, however. In most cases, just specifying a driver will work.

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others imbibing at the Monastery: (4)
As of 2015-07-28 04:23 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (252 votes), past polls