Почему я получаю много предупреждений от Moose при запуске Catalyst? - PullRequest
2 голосов
/ 06 октября 2010

У меня проблема (связанная с Catalyst), по-видимому, с Moose / Class :: MOP.Запуская мой сервер, я получаю следующий вывод ... (показан ниже во всей красе)

Псевдоним и исключающие опции для приложения роли были переименованы в -alias и -excludes в / usr / local / lib / perl/5.10.1/Moose/Meta/Role/Application.pm строка 26 Moose :: Meta :: Role :: Application :: new ('Moose :: Meta :: Role :: Application :: ToRole', 'exclude','ARRAY (0x9645568)') вызывается по адресу /usr/local/lib/perl/5.10.1/Moose/Meta/Role.pm line 416 Moose :: Meta :: Role :: apply ('Moose :: Meta :: Role= HASH (0x95b3368) ',' Moose :: Meta :: Role = HASH (0x9446d90) ',' exclude ',' ARRAY (0x9645568) '), вызываемый по адресу /usr/local/lib/perl/5.10.1/Moose/Util.pm line 133 Moose :: Util :: _ apply_all_roles ('Moose :: Meta :: Role = HASH (0x9446d90)', undef, 'MooseX :: Getopt', 'HASH (0x9454a08)'), вызываемый в / usr / local/lib/perl/5.10.1/Moose/Util.pm line 87 Moose :: Util :: apply_all_roles ('Moose :: Meta :: Role = HASH (0x9446d90)', 'MooseX :: Getopt', 'HASH (0x9454a08) ') вызывается в /usr/local/lib/perl/5.10.1/Moose/Role.pm строка 26 Moose :: Role :: with (' Moose :: Meta :: Role = HASH (0x9446d)90) ',' MooseX :: Getopt ',' HASH (0x9454a08) ') вызывается по адресу /usr/local/lib/perl/5.10.1/Moose/Exporter.pm line 294 Moose :: Role :: with (' MooseX:: Getopt ',' HASH (0x9454a08) '), вызываемый в /usr/share/perl5/Catalyst/ScriptRole.pm, строка 8, требует Catalyst / ScriptRole.pm, вызываемый в /usr/local/lib/perl/5.10.1/Class/MOP.pm строка 113 Класс :: MOP :: __ ANON __ () вызывается по адресу /usr/share/perl5/Try/Tiny.pm строка 71 eval {...} вызывается по адресу / usr / share / perl5 / Try / Tiny.pm line 67 Try :: Tiny :: try ('CODE (0x93c2910)', 'Try :: Tiny :: Catch = REF (0x93bba38)'), вызываемый по адресу /usr/local/lib/perl/5.10.1/Class/Строка MOP.pm 124 Class :: MOP :: load_first_existing_class ('Catalyst :: ScriptRole'), вызываемая в /usr/local/lib/perl/5.10.1/Class/MOP.pm строка 136 Класс :: MOP :: load_class ('Catalyst :: ScriptRole', undef) вызывается по адресу /usr/local/lib/perl/5.10.1/Moose/Util.pm line 109 Moose :: Util :: _ apply_all_roles ('Moose :: Meta :: Class = HASH (0x8fc9378) ', undef,' Catalyst :: ScriptRole ') вызывается по адресу /usr/local/lib/perl/5.10.1/Moose/Util.pm line 87 Moose :: Util :: apply_all_roles (' Moose :: Meta:: Class = HASH (0x8fc9378) ',' Catalyst :: ScriptRole ') вызывается по адресу /usr/local/lib/perl/5.10.1/Moose.pm line 58 Moose :: with (' Moose :: Meta :: Class =HASH (0x8fc9378) ',' Catalyst :: ScriptRole ') вызывается по адресу /usr/local/lib/perl/5.10.1/Moose/Exporter.pm, строка 294 Moose :: with (' Catalyst :: ScriptRole ') вызывается по адресу /usr / share / perl5 / Catalyst / Script / Server.pm строка 14 требует Catalyst / Script / Server.pm, который вызывается по адресу /usr/local/lib/perl/5.10.1/Class/MOP.pm line 113 Class :: MOP:: __NON __ () вызывается в /usr/share/perl5/Try/Tiny.pm строка 71 eval {...} вызывается в /usr/share/perl5/Try/Tiny.pm строка 67 Try :: Tiny :: try ('CODE (0x8f6dc38)', 'Try :: Tiny :: Catch = REF (0x8f8d1c8)') вызывается в /usr/local/lib/perl/5.10.1/Class/MOP.pm строка 124 Класс :: MOP ::load_first_existing_class ('Catalyst :: Script :: Server') вызывается в /usr/local/lib/perl/5.10.1/Class/MOP.pm строка 136 Класс :: MOP :: load_class ('Catalyst :: Script :: Server') вызывается по адресу /usr/share/perl5/Catalyst/ScriptRunner.pm строка 18 Catalyst :: ScriptRunner :: run (' Catalyst :: ScriptRunner ',' Ямайка ',' Сервер ') called в script / boca_server.pl строка 8 Старый API Moose :: Util :: MetaRole (до версии 0.94) устарел в /usr/local/lib/perl/5.10.1/Moose/Util/MetaRole.pm строка 16Moose :: Util :: MetaRole :: apply_metaclass_roles ('for_class', 'Catalyst :: Controller', 'metaclass_roles', 'ARRAY (0x97bdff8)', 'method_metaclass_roles', 'ARRAY (0x97ab9f0)', 'wrapped_methomememe(0x981d650) ') вызывается по адресу /usr/share/perl5/MooseX/MethodAttributes.pm line 32 MooseX :: MethodAttributes :: init_meta (' MooseX :: MethodAttributes ',' for_class ',' Catalyst :: Controller ',' metaclass ', undef) вызывается в /usr/local/lib/perl/5.10.1/Moose/Exporter.pm line 355 Moose :: Exporter :: __ ANON __ ('MooseX :: MethodAttributes') вызывается в / usr / share / perl5 / Catalyst/Controller.pm строка 10Catalyst :: Controller :: BEGIN () вызывается в /usr/share/perl5/Catalyst/Controller.pm строка 10 eval {...} вызывается в /usr/share/perl5/Catalyst/Controller.pm строка 10 требует Catalyst /Controller.pm вызывается по адресу /usr/share/perl5/Catalyst.pm строка 16 Catalyst :: BEGIN () вызывается по адресу /usr/share/perl5/Catalyst/Controller.pm строка 10 eval {...} вызывается по адресу / usr /share / perl5 / Catalyst / Controller.pm строка 10 требует Catalyst.pm, который вызывается по адресу /home/bobek/dev/build_7.2/mvc/Jamaica/script/../lib/Jamaica.pm строка 17 Ямайка :: BEGIN ()вызывается в /usr/share/perl5/Catalyst/Controller.pm строка 10 eval {...} вызывается в /usr/share/perl5/Catalyst/Controller.pm строка 10 требует Jamaica.pm для вызова в / usr / local / lib/perl/5.10.1/Class/MOP.pm строка 113 Класс :: MOP :: __ ANON __ () вызывается в /usr/share/perl5/Try/Tiny.pm строка 71 eval {...} вызывается в / usr /share / perl5 / Try / Tiny.pm строка 67 Try :: Tiny :: try ('CODE (0x8fb3230)', 'Try :: Tiny :: Catch = REF (0x969fee0)') вызывается в / usr / local / lib /perl / 5.10.1 / Class / MOP.pm строка 124 Class :: MOP :: load_first_existing_class ('Jamaica ') вызывается в /usr/local/lib/perl/5.10.1/Class/MOP.pm строка 136 Class :: MOP :: load_class (' Ямайка ') вызывается в / usr / share / perl5 / Catalyst / ScriptRole.pm строка 61 Catalyst :: ScriptRole :: _ run_application ('Catalyst :: Script :: Server = HASH (0x969d748)'), вызываемая по адресу /usr/share/perl5/Catalyst/Script/Server.pm line 181 Catalyst :: Script ::Сервер :: run ('Catalyst :: Script :: Server = HASH (0x969d748)') вызывается по адресу /usr/local/lib/perl/5.10.1/Class/MOP/Method/Wrapped.pm строка 48 Класс :: MOP:: Метод :: Wrapped :: __ ANON __ ('Catalyst :: Script :: Server = HASH (0x969d748)'), вызываемый по адресу /usr/local/lib/perl/5.10.1/Class/MOP/Method/Wrapped.pm89 Catalyst :: Script :: Server :: run ('Catalyst :: Script :: Server = HASH (0x969d748)'), вызываемый в /usr/share/perl5/Catalyst/ScriptRunner.pm строка 20 Catalyst :: ScriptRunner :: run('Catalyst :: ScriptRunner', 'Jamaica', 'Server') вызывается по адресу script / boca_server.pl, строка 8

Я новичок в Catalyst (и мне это нравится, я просто хочу успешно его получитьи работает).Я проверил последние версии Moose и Class :: MOP, и они обновлены (что касается CPAN).

Надеюсь, кто-то, знакомый с Мусом, видел это раньше.Будем благодарны за любые предложения или место для проверки.

Мишель Б.

Ответы [ 2 ]

10 голосов
/ 06 октября 2010

Вы используете старую версию Catalyst.Эта проблема была исправлена ​​в коммите r13516 и уже доступна в CPAN начиная с версии 5.80026 (последняя версия 5.80028 и рекомендуется).

Catalyst использовал устаревшую функцию Moose, которая совсем недавноначалось предупреждение.

1 голос
/ 20 января 2011

Итак, вы правы, у текущей вещи Cat довольно разорванная цепочка зависимостей. Из текущего прохода / отказа на CPAN для 5.80030 видно, что ошибки намного выше, чем обычно.

Есть несколько ударов в зависимости от состояния ваших текущих модулей / версий. Это сработало для меня сегодня утром (я не уверен, что это излишне) -

cpanm -v namespace::clean
cpanm -v namespace::autoclean
cpanm -v B::Hooks::EndOfScope
cpanm -v Package::Stash
cpanm -v Class::MOP Moose MooseX::Types
cpanm -v MooseX::Role::WithOverloading::Meta::Role::Application

cpanm -v Catalyst Catalyst::Devel

И если вы используете Config :: General для своей конфигурации, это тоже хорошая идея:

cpanm -v Config::General

Если они есть и они не запускаются, просто прочитайте трассировку стека (в обратном направлении) в поисках имен или отсутствующих функций / методов. Все, что вы видите в качестве проблемы, обновите. Это «стабильный» набор, но это набор движущихся целей, и все должно выстроиться в ряд.

...