Grüße,Inline-Konstrukteure mit MooseX Ausschalten :: Declare
Als Followup meiner previous question über Moose, ich habe jetzt in ein neues Problem laufen. Ich habe eine Moose-Klasse, die Recipe 12 verwendet, um eine Nicht-Moose-Elternklasse zu erweitern. Hier ist es:
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
);
}
Das funktioniert super. Ich habe auch eine Unterklasse dieser Klasse, die MooseX::Declare
verwendet. Aber weil ich jetzt das Standard-Elch-Konstruktor überschreiben bin, gibt meine Unterklasse diese Warnung:
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
Da MooseX::Declare
Anrufe make_immutable
automatisch hinter den Kulissen, habe ich nicht in der Lage, herauszufinden, wie um es zu aktivieren der inline_constructor => 0
Parameter.