はちゅにっき

こっちのブログはまったり更新

MENTA ではまる(継続中)

MENTA 使ってます。
Catalyst から MENTA に乗り換えた当初は、View とか Controller 付近でかなり困惑しましたが、慣れてしまえば結構サクサクかけますね。
といって、人様に公開できるようなものを作れない自分のカスっぷりも楽しいものですが。
そのうち汎用的なものを作ってみたいものではあります。


ところで、最近になって、0.12 VerUp されたので、svn update してみたら、css や js などの static なファイルが参照できなくなってはまってます。

現象としては

/hoge/menta.cgi/static/menta-logo.png

へのリクエストが

500 Internal Server Error
ファイルを開けません: : No such file or directory at lib/MENTA/Dispatch.pm line 65.

になってしまいます。
trace された結果を見ると

  • in MENTA::Dispatch::show_static at lib/MENTA/Dispatch.pm line 65
    if (index($path, $appdir) != 0) {
        die "どうやら攻撃されているようだ: $path";
    }
    open my $fh, '<:raw', $path or die "ファイルを開けません: ${path}: $!";  # ← ここがエラー
    my $res = HTTP::Engine::Response->new(
        status => 200,
        body   => do { local $/; <$fh> },

というわけで、どうやら $path が空になっているのが原因なんですが。。。
う〜ん?
Apache

Alias /hoge /home/my/menta/project

って設定しているのですが、設定していないサーバではエラーが出ないので、この辺りの設定が関係しているのかな?
ということで現在調査中です。


あと、もひとつ

$ perl -Iextlib/ -MDateTime

すると

Base class package "DateTime::Locale::root" is empty.
    (Perhaps you need to 'use' the module which defines that package first.)
 at extlib//DateTime/Locale/en.pm line 25
BEGIN failed--compilation aborted at extlib//DateTime/Locale/en.pm line 25.
Compilation failed in require at (eval 11) line 3.
        ...propagated at /usr/lib/perl5/5.8.8/base.pm line 85.
BEGIN failed--compilation aborted at extlib//DateTime/Locale/en_US.pm line 25.
Compilation failed in require at (eval 10) line 3.
Compilation failed in require.
BEGIN failed--compilation aborted.

で、abort しちゃいます。
とゆーわけで、Controller で

use DateTime;

すると、もれなく死亡します。
これはまだ原因を究明していないので、static なファイルが 500 だよ!問題が解決したらこちらも探ってみようと思います。


そーゆーのは書いておくと誰かが解決してくれるかもよ!

ってゆーウワサを聞いたので、書いておきます。