Mojolicious でアプリケーションをつくってみた ①【環境構築編】
Perl に挑戦してみました。
I’m new to Perl. って感じです。
Perl のフレームワークといえば Catalist が一番有名なのでしょうか。
なんか大きそうだったので、さくっとアプリケーション作りながらPerl を勉強できそうなMojolicious を使ってみました。
使ってるもの & 環境
Framework : Mojolicious 7.35
ORM : DBIx::Class
Template engine : 標準のやつ
OS : Ubuntu14.04
DB : MySQL5.5
内容
- メモ帳アプリケーション
- タグをつけることができる
- 自由にユーザーを作れる
準備
アプリをそのまま動かしたい場合はこちらの手順を参考にしてください。
最初から作っていきたい場合は
carton をいれて、cpanfile に
requires 'Mojolicious';
だけ記述してインストール、そのあと
carton exec mojo generate app MojoSamle
とコマンドをうって作っていくのが良いと思います。
ディレクトリ・ファイル構成
./ ├── cpanfile ├── cpanfile.snapshot ├── lib │ ├── MojoSample │ │ ├── Controller │ │ │ ├── Base.pm │ │ │ ├── Memos.pm │ │ │ ├── Top.pm │ │ │ └── Users.pm │ │ ├── Helpers.pm │ │ ├── Schema │ │ │ ├── Result │ │ │ │ ├── Memo.pm │ │ │ │ ├── MemoTag.pm │ │ │ │ ├── Tag.pm │ │ │ │ └── User.pm │ │ │ └── ResultSet │ │ │ ├── Memo.pm │ │ │ ├── MemoTag.pm │ │ │ ├── Tag.pm │ │ │ └── User.pm │ │ └── Schema.pm │ └── MojoSample.pm ├── mojo_sample.conf ├── public │ ├── css │ │ ├── reset.css │ │ └── style.css │ └── index.html ├── script │ └── mojo_sample ├── start.sh.sample ├── t │ └── basic.t ├── templates │ ├── example │ │ └── welcome.html.ep │ ├── layouts │ │ └── default.html.ep │ ├── memos │ │ ├── edit.html.ep │ │ ├── index.html.ep │ │ ├── new_.html.ep │ │ ├── show.html.ep │ │ └── widgets │ │ └── back_list.html.ep │ ├── top │ │ └── index.html.ep │ └── users │ ├── login.html.ep │ └── new_.html.ep └── tmp └── compiled_templates └── %2Fvar%2Fwww%2Fmojolicious-sample.com%2Fscript%2F..%2Ftemplates ├── layouts │ └── default.html.txc └── top └── index.html.txc
cpanfile
依存モジュールが書かれたファイル。Ruby でいうGemfile 的なやつ。
cpanfile.snapshot
実際にインストールされているモジュールとそのバージョンが記載されたファイル。このファイルがあれば /local/
はいつでも再現可能。carton install
すると更新される。Ruby でいう Gemfile.lock 的なやつ
lib/MojoSample
コントローラ、モデルが格納されてるディレクトリ。
lib/MojoSample/Schema.pm
Schema/Result/
, Schema/ResultSet/
以下を読みこませるために必要となるベールクラスファイル。
DBIx::Class::Schema
を継承してる。
lib/MojoSample/Schema/Result/〜.pm
データベースのテーブル情報を記述するファイル。テーブル名やスキーマ、テーブル間のリレーションを定義する。
DBIx::Class::Result
クラスを継承する。
自分はここにモデルロジックも書いてる。
lib/MojoSample/Schema/ResultSet/〜.pm
上記Resultクラスの集合を表すクラス。自分はここにデータ取得ロジックを書いてる。必須ではない。
lib/MojoSample.pm
ルーティングとかデータベース接続とかアプリケーションの設定を書くファイル。
mojo_sample.conf
carton exec mojo generate
コマンドでアプリ作成時に自動で出来上がったファイル。中に記載されている secrets
暗号化のための文字列だと思われる。
t/basic.t
上記と同じく勝手にできあがったファイル。テスト用のファイルみたい。
start.sh.sample
いちいち起動コマンドを叩くのが面倒だったので用意した
public/
静的ファイル用のディレクトリ
script/mojo_sample
アプリ起動用スクリプト
template/
テンプレート格納ディレクトリ