カラクリサイクル

『輝かしい青春』なんて失かった人の雑記

Catalystの実行環境の抽象化あたりの流れ

実行環境抽象化に関係ありそうなところだけを抜き出し。Catalyst.pmしか見てなくて、大雑把に把握しかしてないから多分抜けてるところがあり。

というかまあCatalystの実行環境抽象化部分だけ取り出してモジュールができないかなーと思って大体の処理の流れをつかむためにメモっただけなんで正確性はアレ。まあこんな感じかなーとつかむのには良いかも。

とりあえずCatalystのコードは追うのは面倒だけど結構分かりやすい。

Catalyst
    run
        handle_request
            prepare
                if ( engine.can('prepare') ) {
                    engine.preapre
                }
                else {
                    prepare_request
                    prepare_connection
                    prepare_query_paramters
                    prepare_headers
                    prepare_cookies
                    prepare_path
                    unless ( config.parse_on_demand ) \{
                        prepare_body
                    }
                    prepare_action
                }
            disaptch
                dispatcher.dispatch
            finalize
                if ( engine.can('finalize') ) {
                    engine.finalize
                }
                else {
                    finalize_upload
                    if ( error.last >= 0 ) {
                        finalize_error
                    }
                    finalize_headers
                        finalize_cookies
                        engine.finalize_headers
                    if ( request.method eq 'HEAD' ) {
                        response.body = ''
                    }
                    finalize_body
                }