From: t0m Date: Mon, 22 Mar 2010 22:41:12 +0000 (+0000) Subject: Revert "When inserting Cat::Req::REST, always add trait, rather than sometimes using... X-Git-Tag: 0.84~2^2~1 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Action-REST.git;a=commitdiff_plain;h=f560e0ae2a098a7179fac0f734b5376b69e7dce8 Revert "When inserting Cat::Req::REST, always add trait, rather than sometimes using the Cat::Req::REST class directly." This reverts commit 15f4af0ef06d11960e6cb9a4bbebf2ec1ac19a54. This is because if we're always an anon class, then the dumped output is HORRIBLE. Yes, we should fix the dumper to be Moose aware, but I also have no problem with this logic as it used to be.. --- diff --git a/lib/Catalyst/Request/REST.pm b/lib/Catalyst/Request/REST.pm index 1d7e6af..e1b6772 100644 --- a/lib/Catalyst/Request/REST.pm +++ b/lib/Catalyst/Request/REST.pm @@ -24,13 +24,18 @@ sub _insert_self_into { return if $req_class->isa($class); my $req_class_meta = Moose->init_meta( for_class => $req_class ); return if $req_class_meta->does_role('Catalyst::TraitFor::Request::REST'); - my $meta = Moose::Meta::Class->create_anon_class( - superclasses => [$req_class], - roles => ['Catalyst::TraitFor::Request::REST'], - cache => 1 - ); - $meta->add_method(meta => sub { $meta }); - $app->request_class($meta->name); + if ($req_class eq 'Catalyst::Request') { + $app->request_class($class); + } + else { + my $meta = Moose::Meta::Class->create_anon_class( + superclasses => [$req_class], + roles => ['Catalyst::TraitFor::Request::REST'], + cache => 1 + ); + $meta->add_method(meta => sub { $meta }); + $app->request_class($meta->name); + } } __PACKAGE__->meta->make_immutable; diff --git a/t/catalyst-traitfor-request-rest.t b/t/catalyst-traitfor-request-rest.t index 6466158..99f4ffb 100644 --- a/t/catalyst-traitfor-request-rest.t +++ b/t/catalyst-traitfor-request-rest.t @@ -182,8 +182,8 @@ for my $class ( $anon_class, 'Catalyst::Request::REST' ) { $ENV{CATALYST_DEBUG} = 0; my $test = 'Test::Catalyst::Action::REST'; use_ok $test; - ok($test->request_class->meta->does_role('Catalyst::TraitFor::Request::REST'), - 'request class does REST role'); + is($test->request_class, 'Catalyst::Request::REST', + 'Request::REST took over for Request'); my $meta = Moose::Meta::Class->create_anon_class( superclasses => ['Catalyst::Request'], @@ -196,8 +196,7 @@ for my $class ( $anon_class, 'Catalyst::Request::REST' ) { ok !$@, 'Can setup again'; isnt $test->request_class, $meta->name, 'Different request class'; ok $test->request_class->can('__random_method'), 'Is right class'; - ok($test->request_class->meta->does_role('Catalyst::TraitFor::Request::REST'), - 'request class still does REST role'); + ok $test->request_class->can('data'), 'Also smells like REST subclass'; { package My::Request;