Catalyst-Plugin Vorstellung: CommandLine
Von einigen Seiten habe ich in letzter Zeit gehört, dass es eine große Schwäche von Catalyst ist, dass Kommandozeilenskripte nicht oder nur sehr schlecht mit Catalyst verbunden werden können. Dies soll angeblich dazu führen, dass man die Model-Schicht für eben diese Scripts erneut scheiben muss, da man die Schema-Dateien von Catalyst nicht wiederverwenden könne.
Meine Tests mit Catalyst liegen nun schon ein bisschen zurück. Allerdings läuft zur Zeit wieder ein Test, der auf Catalyst aufsetzt. Bei diesem geht es unter anderem auch darum, RSS- und Atom-Feeds automatisiert einzulesen und in einer Datenbank zu speichern. Dies sollte über Cron-Jobs passieren, und natürlich benötige ich in den aufzurufenden Scripts eine Verbindung zur Datenbank. Geschickt wäre es, wenn ich einfach auf Catalyst aufbauen könnte.
Verunsichert durch die oben genannten Gerüchte habe ich mich dennoch auf die Suche gemacht und promt habe ich etwas gefunden. Das Perl-Modul Catalyst::Plugin::CommandLine.
Und es ist so simpel wie die Dokumentation sagt: es wird einfach als Plugin in Catalyst eingebunden und läuft daher auch bei normalen Webapplikationen mit. Da das Modul aber sehr klein ist, sollte dies keine Auswirkungen auf den Betrieb der Webapplikation haben. Im Perl-Script macht man einfach ein
use auf das Modul der Webapplikation und ruft darauf die Methode commandline auf, welche den Context von Catalyst zurück gibt. Mit diesen Context kann man arbeiten, als würde man von der Webapplikation aus arbeiten - womit auch der Zugriff auf die Model-Schicht möglich ist!Ein Beispiel zum Schluss:
#!/opt/local/bin/perl
use strict;
use warnings;
use FindBin;
use lib qw($FindBin::Bin/../lib);
use TestApp;
# Get context
my $c = TestApp->commandline;
my @personen = $c->model("DB::Personen")->all;
foreach (@personen) {
print $_->name . "\n";
}
0 TrackBacks
Folgende Einträge anderer Blogs beziehen sich auf den Eintrag Catalyst-Plugin Vorstellung: CommandLine
TrackBack-URL dieses Eintrags: http://www.rainboxx.de/mt-tb.cgi/44

Feed dieses Blogs abonnieren
Jetzt kommentieren!