次のシンプルな Plack アプリを用意します。
use strict;
use warnings;
use Plack::Builder;
my $app = sub {
return [ 200, [ 'Content-Type' => 'text/plain' ], [ 'Hello World' ] ];
};
builder {
foreach my $act ( qw( /some/aa /another/bb / ) ) {
mount $act => $app;
}
};
リターンのエラー:
WARNING: You used mount() in a builder block, but the last line (app) isn't using mount().
WARNING: This causes all mount() mappings to be ignored.
at /private/tmp/test.psgi line 13.
Error while loading /private/tmp/test.psgi: to_app() is called without mount(). No application to build. at /private/tmp/test.psgi line 13.
しかし、次のビルダー ブロックは問題ありません。
builder {
foreach my $act ( qw( /some/aa /another/bb / ) ) {
mount $act => $app;
}
mount "/" => $app;
};
Plack::Builder のマニュアルに書かれているよりも理解しています
注: ビルダー コードでマウントを使用したら、ルート パス (/) を含むすべてのパスに対してマウントを使用する必要があります。
しかし、for
ループでは/
最後のものとしてマウントを持っているqw( /some/aa /another/bb / )
ので、何かが舞台裏にあります。
誰か説明してくれませんか?