Mojoliciousのモデル構成例

  • 8
    いいね
  • 0
    コメント

0. 環境

OS: Ubuntu 12.04 LTS 64
Mojolicious 6.01
plenv: perl 5.18.1

1. ディレクトリ構成

mojo generate app MyAPPによりデフォルト構成は以下の通り。


my_app
├── lib
│   ├── MyApp
│   │   └── Controller
│   │       └── Example.pm
│   └── MyApp.pm
├── log
├── public
│   └── index.html
├── script
│   └── my_app
├── t
│   └── basic.t
└── templates
    ├── example
    │   └── welcome.html.ep
    └── layouts
        └── default.html.ep

2. Modelの追加

 Controllerディレクトリ以下のコントローラから使用する
モデルを追加します。追加するのはModel.pmとModelディレクトリです。

追加後のディレクトリ構成

my_app
├── lib
│   ├── MyApp
│   │   ├── Controller
│   │   │   └── Example.pm
│   │   │   
│   │   ├── Model
│   │   │   └── Hoge.pm
│   │   │
│   │   └── Model.pm
│   └── MyApp.pm

├── log
│   └── development.log
├── public
│   └── index.html
├── script
│   └── my_app
├── t
│   └── basic.t
└── templates
    ├── example
    │   └── welcome.html.ep
    └── layouts
        └── default.html.ep

11 directories, 13 files

MyApp.pmにModelを追加

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

+use MyApp::Model;
+has 'model' => sub {MyApp::Model->new};

自作モデルHogeを作成

Hoge.pm
package MyApp::Hoge;
use Mojo::Base 'Mojolicious';

sub hello {
  my $self = shift;
  print('Hello');
}

1;

Model.pmにHogeを追加。

Model.pm
package MyApp::Model;
use Mojo::Base 'Mojolicious';

use MyApp::Model::Hoge;
has 'hoge' => sub { MyApp::Model::Hoge->new };

1;

Example.pmから呼び出す
welcomeサブルーチンの中に記述。

Example.pm
+ $self->app->model->hoge->hello;

関連

http://qiita.com/uchiko/items/5ce3adc2bd96c45545a0
http://search.cpan.org/~sri/Mojolicious-6.66/lib/Mojo/Base.pm
https://github.com/yuki-kimoto/mojolicious-guides-japanese/wiki/Mojo::Base