use Moose;
use Moose::Util qw/find_meta/;
-
+use List::MoreUtils qw/uniq/;
use namespace::clean -except => 'meta';
BEGIN { extends qw/Catalyst::Component MooseX::MethodAttributes::Inheritable/; }
my ( $self, $c ) = @_;
my $class = ref($self) || $self;
- my $appclass = ref($c) || $c;
if( ref($self) ){
return $self->$orig if $self->has_action_namespace;
} else {
return $class->config->{namespace} if exists $class->config->{namespace};
}
- my $case_s;
- if( $c ){
- $case_s = $appclass->config->{case_sensitive};
- } else {
- if ($self->isa('Catalyst')) {
- $case_s = $class->config->{case_sensitive};
- } else {
- if (ref $self) {
- $case_s = ref($self->_application)->config->{case_sensitive};
- } else {
- confess("Can't figure out case_sensitive setting");
- }
- }
- }
-
- my $namespace = Catalyst::Utils::class2prefix($self->catalyst_component_name, $case_s) || '';
+ my $namespace = Catalyst::Utils::class2prefix($self->catalyst_component_name) || '';
$self->$orig($namespace) if ref($self);
return $namespace;
};
. ( ref $self ) )
} keys %{ $self->_controller_actions }
) if ( ref $self );
- return @methods;
+ return uniq @methods;
}
#this is still not correct for some reason.
my $namespace = $self->action_namespace($c);
- # Uncomment as soon as you fix the tests :)
- #if (!blessed($self) && $self eq $c && scalar(@methods)) {
- # $c->log->warn("Action methods found defined in your application class, $self. This is deprecated, please move them into a Root controller.");
- #}
+ # FIXME - fugly
+ if (!blessed($self) && $self eq $c && scalar(@methods)) {
+ my @really_bad_methods = grep { ! /^_(DISPATCH|BEGIN|AUTO|ACTION|END)$/ } map { $_->name } @methods;
+ if (scalar(@really_bad_methods)) {
+ $c->log->warn("Action methods (" . join(', ', @really_bad_methods) . ") found defined in your application class, $self. This is deprecated, please move them into a Root controller.");
+ }
+ }
foreach my $method (@methods) {
my $name = $method->name;