Revert "When inserting Cat::Req::REST, always add trait, rather than sometimes using...
t0m [Mon, 22 Mar 2010 22:41:12 +0000 (22:41 +0000)]
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..

lib/Catalyst/Request/REST.pm
t/catalyst-traitfor-request-rest.t

index 1d7e6af..e1b6772 100644 (file)
@@ -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;
index 6466158..99f4ffb 100644 (file)
@@ -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;