2010年2月20日

Couldn't instantiate component。

そーいやぁ、忙しくて
自分宅のCentOS on vmwareにインストールした Catalyst で
mysql に繋げるテストしてないなぁ...。

てな訳で、ふと思い出して、久々にいじってみる。

かくして、DB関連モジュールをインストール。

perl -MCPAN -e 'install Catalyst::Helper::Model::CDBI'
perl -MCPAN -e 'install Class::DBI::mysql'

それから、テスト用の database と テーブルを用意し、
./script/xxx_create.pl model CDBI CDBI DBI:mysql:test ユーザー名 パスワード
などと打って、Model 部分を自動で作ってもらったつもりが。

...が。

./script/xxx_server.pl と打つと、何やら見慣れないエラーが。


require x::Model::CDBI::Test was successful but the package is not defined.
at /usr/local/lib/perl5/site_perl/5.10.1/Catalyst/Utils.pm line 286.
Couldn't instantiate component "x::Model::CDBI", "Inconsistent hierarchy during
C3 merge of class 'Class::DBI::__::Base': merging failed on parent
'Class::Data::Inheritable' at /usr/local/lib/perl5/5.10.1/i686-linux-thread-multi/mro.pm
line 24."Compilation failed in require at /home/anigon/Hello/script/x_server.pl line 66.

・・・はて?

仕方ないので、あれこれググって
これとか、あれこれ見つけるも、
「これだー!」という解決方法が見つからず、
しばし途方に暮れる。
う"ー、Class::DBI::Loader のバージョンは 0.34 だしなぁ...。


ふー。夕飯でも作るか。
じゅーじゅー。(←フライパンで焼いてる)


そして夕飯後。

改めて気合を入れてググった結果、継承順に問題があるらしいとかって話を見かけ
試しに Catalyst モジュールを書き換えてみる。

・/usr/local/lib/perl5/site_perl/5.10.1/Class/DBI.pm


use base qw(Class::Accessor Class::Data::Inheritable Ima::DBI);



use base qw(Ima::DBI Class::Data::Inheritable Class::Accessor);

それから、再び xxx_server.pl で起動してみると、
今度は違う文言が表示されつつも、起動は出来た模様。

ふーむ。それでいいのか?
その文言をよく読むと、こんな事が書いてある。


x::Model::CDBI is using the deprecated Catalyst::Base,
update your application as this will be removed in the next major release
at /usr/local/lib/perl5/site_perl/5.10.1/Catalyst/Base.pm line 7.

はぁ、your application って言われてもなぁ。
Catalyst を新しくしろって事なのかな?
それとも、一部の Plugin とか?と思いつつ
とりあえず Catalyst の update してみる。

perl -MCPAN -e 'upgrade Catalyst::Runtime'
perl -MCPAN -e 'upgrade Catalyst::Devel'
...しかし、何も update された気配もなく。

じゃあ、もしかすると、今回使ってたアプリケーションを
catalyst.pl で作った時はモジュールが古かった?とかって事もあるのかしら?
などと適当なことを思い、再度 catalyst.pl から、やり直すも同じ結果。

うーん。よくわかんないけど、次のバージョンの Catalyst を待てって事かなぁ?
まぁ、動いたから、いっか。

Posted by anigon at 11:30 PM

トラックバックURL:


http://anigon.net/cgi-bin/mt/mt-tb.cgi/574

「自信の作り方。」へ戻る | 「続・Couldn't instantiate component。」へ進む

上へ戻る