Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]3592[/thread]

Catalyst CBDI

Leser: 1


<< >> 7 Einträge, 1 Seite
esskar
 2005-07-16 05:34
#33378 #33378
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
hi (sri),

was muss man denn tun, um *::M::CDBI::* in einem script ohne catalyst benutzen zu können.
Zuvor hatte ich meine Klasse direkt von Class::DBD(::Sweet) abgeleitet. Da musste ich dann aber z.b. die Columns etcpp. definieren. CDBI nimmt mir das ja ab.
wenn ich aber nun z.B. use OxWebMail::M::CDBI::User (); sage, heißt es:
Can't locate object method "has_a" via package "OxWebMail::M::CDBI::User"
also, was mach ich falsch, oder muss ich doch über Class::DBI gehen?\n\n

<!--EDIT|esskar|1121477837-->
sri
 2005-07-16 06:45
#33379 #33379
User since
2004-01-29
828 Artikel
BenutzerIn
[Homepage] [default_avatar]
Du brauchst einfach nur eine Instanz deiner OxWebMail::M::CDBI Klasse.
Denn die ganze Class::DBI::Loader Magie spielt sich in dessen new() ab. ;)
esskar
 2005-07-16 14:39
#33380 #33380
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
fast; der Hund liegt wohl hier

Catalyst::Model::CDBI.pm
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
sub new {
my ( $self, $c ) = @_;
$self = $self->NEXT::new($c);
$self->{namespace} ||= ref $self;
$self->{additional_base_classes} ||= ();
push @{ $self->{additional_base_classes} }, ref $self;
eval { $self->loader( Class::DBI::Loader->new(%$self) ) };
if ($@) { $c->log->debug(qq/Couldn't load tables "$@"/) if $c->debug }
else {
$c->log->debug(
'Loaded tables "' . join( ' ', $self->loader->tables ) . '"' )
if $c->debug;
}
for my $class ( $self->loader->classes ) {
$class->autoupdate(1);
$c->components->{$class} ||= bless {%$self}, $class;
no strict 'refs';
*{"$class\::new"} = sub { bless {%$self}, $class };
}
return $self;
}


$c ist wohl undefined, oder?
sri
 2005-07-16 18:16
#33381 #33381
User since
2004-01-29
828 Artikel
BenutzerIn
[Homepage] [default_avatar]
Ich nehme Test::MockObject dafuer. ;)
esskar
 2005-07-16 18:38
#33382 #33382
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
hmm ... mal sehen...

was anderes, selbe baustellen

Code: (dl )
use base qw/Catalyst::Model::CDBI Class::DBI::Sweet/;


oder besser

Code: (dl )
1
2
3
4
5
6
use base 'Catalyst::Model::CDBI';

->config(
# ...
additional_base_classes => [qw/Class::DBI::Sweet/],
);


und warum?
sri
 2005-07-16 18:46
#33383 #33383
User since
2004-01-29
828 Artikel
BenutzerIn
[Homepage] [default_avatar]
Class::DBI::Sweet ist ein sonderfall (wird auch im perldoc Class::DBI::Loader erwaehnt).
Code: (dl )
left_base_classes => [qw/Class::DBI::Sweet/]
\n\n

<!--EDIT|sri|1121525206-->
esskar
 2005-07-16 20:59
#33384 #33384
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
ach ja; jetzt seh ich es; hatte nur 0.20er version

zu 1:
Code: (dl )
my $cdbi = new OxWebMail::M::CDBI(new OxWebMail); # create magic instance


geht
<< >> 7 Einträge, 1 Seite



View all threads created 2005-07-16 05:34.