yujiro's blog

webエンジニアをしています。

Mojolicious でアプリケーションをつくってみた ①【環境構築編】

github.com

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/

テンプレート格納ディレクト

DB構造

flask_mvc-700x501.png (180.2 kB)

続き

bamboo-yujiro.hatenablog.com