Mojoliciousでディレクトリの場所を変数(属性)として格納する方法

Mojoliciousでとあるディレクトリの場所を保存しておきたい、と言う時がある。例えば、「気軽にmyapp/public/htmlのディレクトリにアクセスしたいな」と言う感じの場合。

その時は、/lib/MyApp.pmで以下のように書けば良い。(一応、mojo generate app MyAppでアプリを作ったと仮定する)

package MyApp;
use Mojo::Base 'Mojolicious';

has html_dir => sub { shift->home . '/public/html' };

もし、このhtml_dirをコントローラー内で呼び出したい場合は、以下のようにする。

sub index {
  my $c = shift;
  my $dir = $c->app->home_dir  // myapp/public/html 
}

今回調べたところのソースコードを以下に貼っておきます。

参考:mojo/Mojolicious.pm at master · mojolicious/mojo

参考:mojo/Home.pm at master · mojolicious/mojo