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

ReratedPosts

Mojoliciousで「Can't use string ("Controller") as a HASH ref while "strict refs" in use」のエラーが発生した時の対策
perlのcpanmでDBI::mysqlをインストールする際に「Configure failed for DBD-mysql-4.050. See build.log for details.」と出た時の対処法
perl(Mojolicious)をレンタルサーバーXserverを使って公開する手順まとめ
perlでは何がtrueで何がfalseと判定されるのか
Mojoliciousで文字化けが起こった時の対処法2つ
perlでIO::Socketを使う時に「permission deny」と言うエラーが出た時の対処法