perl Mojolicious:5

2015.01.22 Thursday 01:03
0
    動作確認できる環境を作る

    とりあえず動作を確認できる環境を作る。
    アプリディレクトリにPluginディレクトリを追加。

    $ mkdir -p lib/Mojolicious/Plugin

    libにパスが通っていれば、
    app->pluginで普通に読み込まれるようになる。
    プラグインのプログラムを書く

    プラグインのプログラムは、以下の形式に従うようにする。

    モジュールの名前を"Mojolicious::Plugin::*"にする
    Mojolicious::Pluginを継承する
    registerメソッドを定義する

    以下の様なプログラムになる。
    lib/Mojolicious/Plugin/Example.pm

    package Mojolicious::Plugin::Example;
    use Mojo::Base 'Mojolicious::Plugin';

    sub register {
    my ($self, $app, $conf) = @_;

    }

    1;

    registerメソッドに処理を書いていく。
    helper機能でControllerに新しいメソッドを追加したり、
    フック機能で入力や出力のフィルタ処理を追加したりする感じになる。
    例: Controllerに新しいメソッドを追加する

    helper機能を使うと、Controllerに新しいメソッドを追加することができる。
    例えば、PHPのnl2brのようなメソッドを追加するプラグインは以下のようになる。
    lib/Mojolicious/Plugin/Nl2br.pm

    package Mojolicious::Plugin::Nl2br;
    use Mojo::Base 'Mojolicious::Plugin';

    sub register {
    my ($self, $app, $conf) = @_;

    $app->helper('nl2br' => sub {
    my ($c, $text) = @_;
    $text =~ s/(¥r¥n|¥n¥r|¥n|¥r)/$1/g;
    return $text;
    });
    }

    1;

    これを読み込むと、Controllerにnl2brメソッドが生える。
    テンプレート内では、appでControllerにアクセスできるようになっているので、
    app->nl2br($txt)という感じで使用することができるようになる。
    myapp.pl

    use Mojolicious::Lite;
    use lib 'lib';

    plugin 'Nl2br';

    get '/' => sub {
    my $self = shift;

    $self->stash->{txt} = "テスト1¥nテスト2¥nテスト3¥n";
    # ここでも使える $self->nl2br("テスト1¥nテスト2¥nテスト3¥n");

    $self->render();
    } => 'index';

    app->start;
    __DATA__

    @@ index.html.ep

    テスト

    <%== app->nl2br($txt) %>



    その他
    プラグインを読み込む名前空間を追加

    自社やアプリ特有のプラグインを作る場合は、
    名前空間を"Mojolicious::Plugin"以外にしたいことがあるかもしれない。

    以下の設定で、プラグインを読み込む名前空間を追加することができる。
    myapp.pl

    push @{app->plugins->namespaces}, 'MyApp::Plugin';

    お手本プラグイン

    標準で入っているプラグインのプログラムを読めば、
    どのような機能が作れるか、どのように実装するのかが分かる。
    https://metacpan.org/pod/Mojolicious::Plugins#PLUGINS

    CPANでMojolicious::Pluginを検索すれば、
    他の人が作ったプラグインも見れる。
    https://metacpan.org/search?q=Mojolicious%3A%3APlugin
    category:2ch | by:ittoocomments(0)trackbacks(0) | -

    ad
    Calender
          1
    2345678
    9101112131415
    16171819202122
    23242526272829
    3031     
    << July 2017 >>
    Selected entry
    PR
    Category
    Archives
    Recent comment
    • マクドナルドでYahoo BBモバイルポイント 公衆無線LANサービスがつながらない
      66hills
    • マクドナルドでYahoo BBモバイルポイント 公衆無線LANサービスがつながらない
      ssd
    • マクドナルドでYahoo BBモバイルポイント 公衆無線LANサービスがつながらない
      max
    • マクドナルドでYahoo BBモバイルポイント 公衆無線LANサービスがつながらない
      DOM
    • マクドナルドでYahoo BBモバイルポイント 公衆無線LANサービスがつながらない
      DOM
    • コンピュータ業界の根本的な変化
      cloud
    • コンピュータ業界の根本的な変化
      Dellの仮想化
    • マクドナルドでYahoo BBモバイルポイント 公衆無線LANサービスがつながらない
      えちごや
    • マクドナルドでYahoo BBモバイルポイント 公衆無線LANサービスがつながらない
      touch
    • マクドナルドでYahoo BBモバイルポイント 公衆無線LANサービスがつながらない
      bob77777
    Recent trackback
    • スマートフォンの法人活用例
      無線LANネットのブログ
    • Yahoo!オークションからのアフィリエイト収入が一気に70%減になってしまい涙目になってる話
      特選情報
    Recommend
    Link
    Profile
    Search
    Others
    Mobile
    qrcode
    Powered
    無料ブログ作成サービス JUGEM