Я пытаюсь создать работоспособную программу Муз следуя примеру в MooseX::Runnable docs:Почему я получаю «Атрибут (класс) не передает ограничение типа, потому что: Ошибка проверки для« MooseX :: Runnable :: Invocation :: RunnableClass »?
package LaborData::Data::DBIxTest;
use Moose;
use Modern::Perl;
use LaborData::Data::Schema;
with 'DB', 'MooseX::Runnable';
sub run {
my ($self, $name) = @_;
say $name;
}
Но когда я бегу
mx-run LaborData::Data::DBIxTest.pm hi
в командной строке, я получаю эту ошибку:
Attribute (class) does not pass the type constraint because: Validation failed for 'MooseX::Runnable::Invocation::RunnableClass' with value "LaborData::Data::DBIxTest.pm" at /usr/lib/x86_64-linux-gnu/perl5/5.20/Moose/Util.pm line 49
Moose::Util::throw_exception('ValidationFailedForTypeConstraint', 'type', 'MooseX::Types::TypeDecorator=HASH(0x38728e8)', 'value', 'LaborData::Data::DBIxTest.pm', 'attribute', 'Moose::Meta::Attribute=HASH(0x38bd4e8)') called at /usr/lib/x86_64-linux-gnu/perl5/5.20/Moose/Meta/Attribute.pm line 1265
Moose::Meta::Attribute::verify_against_type_constraint('Moose::Meta::Attribute=HASH(0x38bd4e8)', 'LaborData::Data::DBIxTest.pm', 'instance', 'MooseX::Runnable::Invocation::MxRun=HASH(0x38a13d8)') called at /usr/lib/x86_64-linux-gnu/perl5/5.20/Moose/Meta/Attribute.pm line 1252
Moose::Meta::Attribute::_coerce_and_verify('Moose::Meta::Attribute=HASH(0x38bd4e8)', 'LaborData::Data::DBIxTest.pm', 'MooseX::Runnable::Invocation::MxRun=HASH(0x38a13d8)') called at /usr/lib/x86_64-linux-gnu/perl5/5.20/Moose/Meta/Attribute.pm line 511
Moose::Meta::Attribute::initialize_instance_slot('Moose::Meta::Attribute=HASH(0x38bd4e8)', 'Moose::Meta::Instance=HASH(0x3881ad0)', 'MooseX::Runnable::Invocation::MxRun=HASH(0x38a13d8)', 'HASH(0x37fc528)') called at /usr/lib/x86_64-linux-gnu/perl5/5.20/Class/MOP/Class.pm line 524
Class::MOP::Class::_construct_instance('Moose::Meta::Class=HASH(0x3481260)', 'HASH(0x37fc528)') called at /usr/lib/x86_64-linux-gnu/perl5/5.20/Class/MOP/Class.pm line 494
Class::MOP::Class::new_object('Moose::Meta::Class=HASH(0x3481260)', 'HASH(0x37fc528)') called at /usr/lib/x86_64-linux-gnu/perl5/5.20/Moose/Meta/Class.pm line 274
Moose::Meta::Class::new_object('Moose::Meta::Class=HASH(0x3481260)', 'HASH(0x37fc528)') called at /usr/lib/x86_64-linux-gnu/perl5/5.20/Moose/Object.pm line 23
Moose::Object::new('MooseX::Runnable::Invocation::MxRun', 'class', 'LaborData::Data::DBIxTest.pm', 'plugins', 'HASH(0x387f1a0)', 'parsed_args', 'MooseX::Runnable::Util::ArgParser=HASH(0x3486408)') called at /usr/local/bin/mx-run line 28
main::run at /usr/local/bin/mx-run line 9
Я могу загрузить модуль из сценария без ошибок. Я также могу запустить программу просто отлично используя Moose сообщения об ошибках technique found here.
Похоже на https://rt.cpan.org/Public/Bug/Display.html?id=58028 – ThisSuitIsBlackNot
Эта ошибка была исправлена, и, кроме того, мое имя модуля передало бы это регулярное выражение, вызывающее ошибку. Так что получается, что я действительно не пробовал выдавать команду без расширения .pm в конце имени пакета, как я думал. Как только я удалил его, он работал нормально. – StevieD
Вы правы, этот билет должен быть закрыт! – ThisSuitIsBlackNot