第8章 Mojolicious ベースにリファクタリングをする(その2)

前回はモデルロジック部分の切り離しをおこなってみました。 今回はテンプレート部分の切り離しを行なってゆきたいと思います。 

そのまえに一つ紹介しておきたいのは metacpan サイトの Mojolicious の公式ドキュメントです 

https://metacpan.org/pod/Mojolicious

 こちらの中から Mojolicious::Guides::Growing にいくと 

https://metacpan.org/pod/distribution/Mojolicious/lib/Mojolicious/Guides/Growing.pod

に今回紹介するテンプレートを切り離すやり方が紹介されています。

Mojolicious にはあらかじめテンプレートを切り離すための inflate コマンドが用意されています

8.2 テンプレート

Mojo の場合テンプレートの切り離しはコマンド一つで可能です。

8.2.1 inflate コマンド

% docker-compose exec web carton exec -- ./bulletin.pl inflate
  [mkdir] /usr/src/app/templates
  [write] /usr/src/app/templates/list.html.ep
  ...
(templates ディレクトリが自動生成された)

8.2.2 テンプレートのディレクトリ構造

Mojo においては下記のようなディレクトリ構造で配置とすると自動的に テンプレートとして読み込みをおこなってくれます。

|- templates              # 画面表示用テンプレート各種
|  |- layouts             # テンプレート共通画面
|  |  +- default.html.ep  # デフォルトの共通画面
|  +- create.html.ep      # create コントローラー画面
|  +- index.html.ep       # index コントローラー画面
|  +- list.html.ep        # list コントローラー画面

8.2.3 旧テンプレ部分の修正

templates 配下にファイルが配置されるとそちらのテンプレファイルが優先 されてしまいますので、最初に書いていたテンプレート部分は削除しておきましょう。

bulletin.pl

# ...
app->start;
# __DATA__ 以下の部分は全て削除する

最後に念のためテストコード実行

% docker-compose exec web carton exec -- prove

8.2.4 まとめ

8.2.5 次回

今回はテンプレート部分の切り離しをしました。

次回はコントローラー部分の切り離しをやってみたいと思います。