[Catalyst] Newbie Catalyst::Model::Factory

Michael Peck mpeck at pobox.com
Tue Oct 23 17:52:07 GMT 2007


I am new to Catalyst, but have been successful at creating simple DBIC CRUD
apps.  Now, I am trying something different...  I want to use an
Archive::Tar::File object as a model.  I have created my model as:

package LogManager::Model::Tar;

use strict;
use warnings;
use base 'Catalyst::Model::Factory';

__PACKAGE__->config(
    class       =3D> 'Archive::Tar::File',
    constructor =3D> 'new',
);

1;

The Archive::Tar::File constructor (new) requires a filename be passed e.g.,
new( file =3D> $path ).  In a controller, I have tried:

sub view : Local {
    my ( $self, $c, $file ) =3D @_;

    LogManager->config->{'Model::Tar'} =3D {
        class =3D> 'Archive::Tar::File',
        args  =3D> {
            file =3D> "c:\\temp\\logs\\$file",
        },
    };
    my $tarball =3D $c->model('LogManager::Tar');
    if( $tarball ) {
        my @items =3D $tarball->get_files;
        $c->stash->{items} =3D @items;
    }
    else {
        $c->stash->{error_msg} =3D "Couldn't instantiate LogManager::Tar
model";
    }
    $c->stash->{template} =3D 'log/view.tt2';
}

The server started without error, and I called it with *"*
http://localhost:3000/log/view/WEBCGI.usgap002.20071020093500.tar"

I have, unsuccessfully, tried several other scenarios, but all I get is an
undefined object, resulting in $c->stash->{error_msg} being set to "Couldn't
instantiate LogManager::Tar model".  Any pointers in the right direction are
greatly appreciated.

BTW, Catalyst is and awesome framework!

Thanks,
Mike Peck
mpeck at pobox.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.scsys.co.uk/pipermail/catalyst/attachments/20071023/31170=
a87/attachment.htm


More information about the Catalyst mailing list