ROUTE 3390

備忘録的な用途で書いていますが、どなたかの役に立つ事があれば嬉しいです。

Mojoliciousのプラグイン作成コマンドを使ってみた

Mojoliciousで開発をしていて、既存のプラグインを使ったり、新規に自分で作ったりすると思いますが
そんな自分で作ったプラグインの中には「CPANにあげたい!」と思うものも出てくるんじゃないでしょうか。


僕は今回、Webサイトの他言語対応(国旗の画像をポチると、表示される言語が切り替わる)をするために、
簡潔に日本語や英語の文言を管理できて、
Mojolicious上のアクションやらテンプレートやらで使えたら良いなー
と思って、簡単なプラグインを作ってみました。
モジュールはgithubにあげました
(githubも初心者なので、いろいろ分からないなりに。。。)


今回はコマンドを使って、モジュールにするところが本題なので
モジュールの中身について説明はありません。


なにやらMojolicious::Plugin::I18Nというのもあるようなのですが、
自分が使いやすいのを作っちゃえ的なノリです。


というわけで、適当なディレクトリでコマンドの実行です。
末尾部分がモジュール名になります。
僕が今回作りたかったのはMojolicious::Plugin::Message::Localeという物なので、こんな感じです。

shell> mojo generate plugin Message::Locale

するとコマンドを実行したとこにMessage::Localeディレクトリが作成され、
その下に一通りのファイルが作成されます。

Message::Locale/lib/Mojolicious/Plugin/Message/Locale.pm
Message::Locale/t/basic.t
Message::Locale/Makefile.PL

Locale.pm
これはもちろんプラグイン本体です。

basic.t
テストモジュールのひな形になります。

Makefile.PL
このモジュールをインストールするために必要になります。
Makefileとか書いた事ないから、これは嬉しかった!


んで、モジュールの本体を書きます。(既に作ってるプラグインの中身をこちらに)
perldocを書き、テストを書く
それが出来たらインストールしてみる。

shell> perl Makefile.PL
Writing Makefile for Mojolicious::Plugin::Message::Locale
Writing MYMETA.yml and MYMETA.json

shell> make
cp lib/Mojolicious/Plugin/Message/Locale.pm blib/lib/Mojolicious/Plugin/Message/Locale.pm
Manifying blib/man3/Mojolicious::Plugin::Message::Locale.3pm

shell> make test
PERL_DL_NONLAZY=1 /opt/local/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/basic.t .. ok
All tests successful.
Files=1, Tests=3,  1 wallclock secs ( 0.04 usr  0.01 sys +  0.51 cusr  0.05 csys =  0.61 CPU)
Result: PASS

shell> make install
Installing /opt/local/lib/perl5/site_perl/5.12.3/Mojolicious/Plugin/Message/Locale.pm
Installing /opt/local/share/man/man3/Mojolicious::Plugin::Message::Locale.3pm
Appending installation info to /opt/local/lib/perl5/5.12.3/darwin-multi-2level/perllocal.pod 

完成!!
ここまで出来れば、CPANでインストールしたモジュールのように利用する事が出来ます。
次はこの手順で作成したモジュールをCPANに上げてみたいと思います。

どうだろうなー できるのかなー
やったことないからどうなる事やら