[Catalyst] Dynamic model and controller creation

Bill Moseley moseley at hank.org
Mon Jan 2 16:30:19 GMT 2012


On Mon, Jan 2, 2012 at 6:42 PM, Tomas Doran <bobtfish at bobtfish.net> wrote:

>
>
> Why are you messing around with ACCEPT_CONTEXT to do this?
>
> Why not just use COMPONENT to return the service class once?
>

Oh, I'm glad you brought that up.

Couple of reasons.  Not shown in my sample code, but I'm setting an
attribute at construction time from another model instance.

That is,

sub ACCEPT_CONTEXT {
    my ( $self, $c, @args ) =3D @_;

    my $service =3D $self->service;

    unless ( $service ) {
        my $service_class =3D $self->service_class;
        Class::MOP::load_class( $service_class );

        $service =3D $service_class->new({
            *connection =3D> $c->model( 'Some::Client' ),*
        });
        ...

Where Model::Foo does use Model::Adaptor.   Maybe I could  work with
setup_components to make sure the model instances are created in the
correct order (or user Bread::Board as discussed earlier).

I'm also using a few models that create a socket at instance time and are
not smart about forking.  (In some cases I wrap those in a separate class,
though.)



https://github.com/bobtfish/**CatalystX-JobServer/blob/**
> master/lib/CatalystX/**JobServer/Web/Plugin/**ModelsFromConfig.pm#L7<http=
s://github.com/bobtfish/CatalystX-JobServer/blob/master/lib/CatalystX/JobSe=
rver/Web/Plugin/ModelsFromConfig.pm#L7>
>
> Which is code to do exactly what you want - i.e. setup any models there is
> config for, but which don't have an explicit class on-disk, and then go on
> to setup controllers for each model setup.
>

Sure does!  Thanks,


-- =

Bill Moseley
moseley at hank.org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.scsys.co.uk/pipermail/catalyst/attachments/20120102/d2898=
1df/attachment.htm


More information about the Catalyst mailing list