2017-03-19 11 views
2

Catalystサーバースクリプトの実行時に以下の問題が発生しました。Perl 5.8.8 Catalystのサポート

Couldn't load class (Catalyst::Script::Server) because: "ensure_class_loaded" is not exported by the Catalyst::Utils module 
Can't continue after import errors at /opt/madhan/lib/perl5/Catalyst/ScriptRole.pm line 7. 
BEGIN failed--compilation aborted at /opt/madhan/lib/perl5/Catalyst/ScriptRole.pm line 7. 
Compilation failed in require at /usr/lib/perl5/site_perl/5.8.8/Module/Runtime.pm line 313. 
Compilation failed in require at /opt/madhan/lib/perl5/Catalyst/ScriptRunner.pm line 13. 
     Catalyst::ScriptRunner::find_script_class("Catalyst::ScriptRunner", "testsite", "Server") called at /opt/madhan/lib/perl5/Catalyst/ScriptRunner.pm line 42 
     Catalyst::ScriptRunner::run("Catalyst::ScriptRunner", "testsite", "Server") called at /opt/madhan/testsite/script/testsite_server.pl line 8 

パール5.8.8はCatalyst MVCをサポートしますか?

+3

* *動作するはずです - これはバグだと思いますが、私はそれについてメンテナに話しています。しかし、あなたは5.8.8が10年以上前であることを認識していますか? – hobbs

+0

使用しているCatalystのバージョンは何ですか? ( 'perl -MCatalyst -le'print $ Catalyst :: VERSION'') – ikegami

+2

Perlは2つのバージョンを後方にサポートしています。今日最後にリリースされたのは5.24.1なので、サポートされているのは5.20+です。:)私は、長いサポートされているディストリビューションの一部のベンダー(特にRedHat)が5.8.8を使用していることを理解していますが、最近の簡単なUnicode処理が必須であるWeb-envのアップグレードが本当に必要です。[plenv ](https://github.com/tokuhirom/plenv)または[anyenv](https://github.com/riywo/anyenv)は簡単です。 (ただIMHO)。 – jm666

答えて

6

これはCatalystのバグです。 Catalyst :: ScriptRoleには型チェックコードがいくつかありましたが(2012年以降!)、完全に壊れていましたが、破損は特定の状況でしか見えませんでした。つまり、スクリプトがまだCatalyst:ScriptRoleにloader_classシステムに非常に古いバージョンのUNIVERSAL.pm(perl 5.8に付属しているものなど)がある場合は、ロードされたクラス(おそらく誰も持っていないクラス)、またはあなたが走っているこの2番目のケースです。

この問題を解決するために、Catalyst-Runtimeにパッチを適用しました。 うまくいけばすぐにそれはCatalyst-Runtime 5.90115に含まれています。

関連する問題