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

前回でコントローラーの切り離しまですすみました。 今回は細かい全体の調整をしてみたいと思います。

8.4 全体の調整

8.4.1 コントローラーの調整

モデル同様共通化用のメソッド記述用のファイルを用意

% touch lib/BeginningMojo/Controller/Base.pm

lib/BeginningMojo/Controller/Base.pm

package BeginningMojo::Controller::Base;
use Mojo::Base 'Mojolicious::Controller';

1;

継承関係をととのえる

lib/BeginningMojo/Controller/Bulletin.pm

package BeginningMojo::Controller::Bulletin;
use Mojo::Base 'BeginningMojo::Controller::Base';
use Mojo::Util qw(trim);

# ...省略

1;

テストコードを実行確認

% docker-compose exec web carton exec -- prove

8.4.2 モジュールの調整

モジュール読み込みのパスを整える

script/beginning_mojo

#!/usr/bin/env perl
use strict;
use warnings;
use Mojo::File 'curfile';
use lib curfile->dirname->sibling('lib')->to_string;
use Mojolicious::Commands;
Mojolicious::Commands->start_app('BeginningMojo');

テストコードの記述を統一

t/bulletin.t

t/remove.t

use Mojo::Base -strict;
use Test::More;
use Test::Mojo;
use Mojo::Util qw{dumper};
# テストコードで読み込むものを統一しておく

テストコードを実行確認(コマンドが変わったことに注意)

% docker-compose exec web carton exec -- prove --lib

bin/compose-cmd-test.bash

#!/usr/bin/env bash
carton exec -- prove --lib

8.4.3 テンプレートの調整

テンプレートのディレクトリ構造を修正

(通常はコントローラーのクラス名のディレクトリ構造に合わせる)
% mkdir templates/bulletin
% mv templates/create.html.ep templates/bulletin/create.html.ep
% mv templates/index.html.ep templates/bulletin/index.html.ep
% mv templates/list.html.ep templates/bulletin/list.html.ep

コントローラーを整える

lib/BeginningMojo/Controller/Bulletin.pm

# ...
sub index {
    # ...
    $self->render( template => 'bulletin/index' );
}

sub list {
    # ...
    $self->render( template => 'bulletin/list' );
}

sub create {
    # ...
    $self->render( template => 'bulletin/create' );
}
# ...

テストコードを実行確認

% docker-compose exec web carton exec -- prove --lib

8.4.4 まとめ

8.4.5 次回

今回でMojolicious ベースの構造体に変更するまでがおわりました。

次回は環境設定周りをやってみたいと思います。