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

Catalyst: Context-Objekt, warum das zweite?

Leser: 1


<< >> 7 Einträge, 1 Seite
pug
 2006-08-16 20:34
#30190 #30190
User since
2005-08-17
91 Artikel
BenutzerIn
[default_avatar]
Hallo zusammen,
mal wieder eine dumme Frage: Warum muß bei Catalyst das "Context-Objekt" immer das zweite sein? Hat das bestimmte Gründe?

Gruss Christian
Ein Betriebssystem sie zu knechten, sie alle zu finden, Ins Dunkel zu treiben und ewig zu binden.

William Gates III
renee
 2006-08-16 20:46
#30191 #30191
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Das erste ist immer das Object der Klasse, die gerade aufgerufen wird und in Catalyst wird immer das Context-Objekt mitgeliefert. Das ist also eine Sache des Catalyst-Designs...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
esskar
 2006-08-17 08:43
#30192 #30192
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
intern erwartet catalyst den context parameter an 2ter stelle,
deswegen sollte man es auch so handhaben.

was stört dich daran?
pug
 2006-08-17 16:05
#30193 #30193
User since
2005-08-17
91 Artikel
BenutzerIn
[default_avatar]
[quote=esskar,17.08.2006, 06:43]intern erwartet catalyst den context parameter an 2ter stelle,
deswegen sollte man es auch so handhaben.

was stört dich daran?[/quote]
Stört mich gar nix. Ich wollte einfach mal wissen wiso das so gemacht wird. Aber jetzt finde ich es logisch ;-)

Andere Sache. Ich bin gerade dabei das Beispielprojekt in Catalyst Tutorial durchzuarbeiten. Die Datenbank ist angelegt und auch die "Objekt-Module"(?) für das handling mit der Datenbank ( im Verzeichnis MyAppDB ).

Wenn ich aber wie im Beispiel das Helper-Script

Quote
script/myapp_create.pl model MyAppDB DBIC::Schema MyAppDB dbi:SQLite:myapp.db '' '' '{ AutoCommit => 1 }'
um die Modelle zu erzeugen, bekomme ich eine Fehlermeldung:

Quote
Couldn't load helper "Catalyst::Helper::Model::DBIC::Schema", "Can't locate Catalyst/Helper/Model/DBIC/Schema.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .) at (eval 15) line 3.
" at script/myapp_create.pl line 17


Hat sich da irgend etwas seit dem Erstellen dieser Doku verändert?

Gruss Christian
Ein Betriebssystem sie zu knechten, sie alle zu finden, Ins Dunkel zu treiben und ewig zu binden.

William Gates III
Taulmarill
 2006-08-17 17:04
#30194 #30194
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
hast du Catalyst::Model::DBIC::Schema installiert?
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
pug
 2006-08-17 17:16
#30195 #30195
User since
2005-08-17
91 Artikel
BenutzerIn
[default_avatar]
Nein habe ich nicht. Das habe ich jetzt rausbekommen, daß das zusätzlich installiert werden muß. Aber hätte man so etwas nicht schon am Anfang dieser Doku erwähnen sollen? Die benötigten Modul sind ja in lib/MyApp.pm. Dieses wird am Anfang abgearbeitet (wenn ich das richtig vertanden habe). Also im Tutorial steht nicht, wie man benötigte Module nachinstalliert.

Wie dem auch sei, ich lege das Projekt jetzt neu an und füge in "lib/MyApp.pm" die Zeile "Model::DBIC::Schema" noch ein.

Gruss Christian

P.S. Moment, reicht ein "ConfigLoader" ?\n\n

<!--EDIT|pug|1155821224-->
Ein Betriebssystem sie zu knechten, sie alle zu finden, Ins Dunkel zu treiben und ewig zu binden.

William Gates III
seebap
 2006-08-21 12:13
#30196 #30196
User since
2003-11-01
12 Artikel
BenutzerIn
[default_avatar]
Installieren reicht eigentlich. Bei mir war ausserdem Catalyst::Plugin::StackTrace auch nicht installiert. In MyApp.pm musst du eigentlich nichts dazu schreiben. Catalyst ladet eh deine Schema Klasse MyAppDB.pm, die von DBIx::Class::Schema erbt. Das passiert wenn in deinem Controller sowas steht:
Code: (dl )
        my $book = $c->model('MyAppDB::Book')->irgentwas();
<< >> 7 Einträge, 1 Seite



View all threads created 2006-08-16 20:34.