Maypole::setup

Maypole::setup

概要

My::App->setup($data_source, $user, $password, \%attr);

configを設定してから呼び出す。

実装

  • 呼び出し元クラス名と引数を渡してMaypole::handlerを呼び出す無名サブルーチンを呼び出し元クラスのhandler(型グロブ)に代入する。
    {
        no strict 'refs';
        no warnings 'redefine';

        # Naughty.
        *{ $calling_class . "::handler" } =
          sub { Maypole::handler( $calling_class, @_ ) };
    }
  • configにmodelが設定されてなかったらMaypole::Model::CDBIを設定する。
$config->model || $config->model(""Maypole::Model::CDBI");
  • デルをrequireでロードする。失敗したらdieする。
$config->model->require;
  • modelクラスのsetup_databaseを呼び出す。
$config->model->setup_database( $config, $calling_class, @_ );
  • $config->classesに設定された各クラス継承ツリーの先頭にmodelクラスをセットし、可能ならadoptをコールする。
    for my $subclass ( @{ $config->classes } ) {
        no strict 'refs';
        unshift @{ $subclass . "::ISA" }, $config->model;
        $config->model->adopt($subclass)
          if $config->model->can("adopt");
    }

呼び出し元

アプリケーションのハンドラとなるユーザーモジュール