Saludos,Desactivación de constructores en línea con MooseX :: Declarar
Como seguimiento a mi previous question sobre Moose, ahora he encontrado con un nuevo problema. Tengo una clase Moose que usa Recipe 12 para extender una clase primaria que no sea de Moose. Aquí está:
package MyApp::CGI;
### TODO: make this work with MooseX::Declare?
use Moose;
extends 'CGI::Application';
sub new {
my $class = shift;
my $obj = $class->SUPER::new(@_);
return $class->meta->new_object(__INSTANCE__ => $obj, @_);
}
sub setup {
my $self = shift;
$self->start_mode('main');
my @methods = map { $_->name } $self->meta->get_all_methods;
$self->run_modes(map { /^rm_(.+)$/ => $_ }
grep { /^rm_/ }
@methods
);
}
Esto funciona genial. También tengo una subclase de esta clase que usa MooseX::Declare
. Sin embargo, debido a que ahora estoy anulando los alces constructor por defecto, mi subclase emite esta advertencia:
Not inlining 'new' for MyApp::CGI::Login since it is not inheriting the default Moose::Object::new
If you are certain you don't need to inline your constructor, specify inline_constructor => 0 in your call to MyApp::CGI::Login->meta->make_immutable
Desde MooseX::Declare
llamadas make_immutable
automáticamente detrás de las escenas, no he podido encontrar la manera de conseguir que se encienda el parámetro inline_constructor => 0
.