Changeset 23662

Show
Ignore:
Timestamp:
11/14/08 17:25:54 (5 years ago)
Author:
tokuhirom
Message:

r30516@skinny: tokuhirom | 2008-11-14 15:24:51 +0900
redirect とか render とかよんだ瞬間にデタッチすることにした。

Location:
lang/perl/MENTA/trunk
Files:
5 modified

Legend:

Unmodified
Added
Removed
  • lang/perl/MENTA/trunk/NOTE

    r23661 r23662  
    5151    フックとかつける? 
    5252    redirect/render とかは発行したら detach するべき 
     53    uri_with っぽいのもほしい。 
    5354 
  • lang/perl/MENTA/trunk/app/menta.cgi

    r23659 r23662  
    3131sub do_index { 
    3232    render('index.html'); 
     33    die "DON'T REACH HERE"; 
    3334} 
    3435 
     
    5455    render('mobile.html'); 
    5556} 
     57 
  • lang/perl/MENTA/trunk/app/tmpl/bbs.html

    r23661 r23662  
    33%=r render_partial('header.html', $title) 
    44<h1><%= $title %></h1> 
    5 <form method="post" action="<%= docroot %>bbs_sqlite"> 
     5<form method="post" action="<%= uri_for('bbs_sqlite') %>"> 
    66<input type="text" name="body" /> 
    77<input type="submit" value="送信" /> 
  • lang/perl/MENTA/trunk/lib/MENTA.pm

    r23659 r23662  
    44use utf8; 
    55 
    6 our $FINISHED; 
    76our $REQ; 
    87our $CONFIG; 
     
    4443    local $MENTA::CONFIG; 
    4544    local $MENTA::REQ; 
    46     local $MENTA::FINISHED = 0; 
    4745    local $MENTA::CARRIER; 
    4846 
     
    5452    local $SIG{__DIE__} = sub { 
    5553        my $msg = shift; 
     54        return $msg if ref $msg && ref $msg eq 'HASH' && $msg->{finished}; 
    5655        my $i = 0; 
    5756        my @trace; 
     
    9897            if (my $code = main->can($meth)) { 
    9998                $code->(); 
    100                 unless ($MENTA::FINISHED) { 
    101                     die "なにも出力してません"; 
    102                 } 
     99                die "なにも出力してません"; 
    103100            } else { 
    104101                if (my $cdir = config->{menta}->{controller_dir}) { 
     
    110107                        if (my $code = main->can($meth)) { 
    111108                            $code->(); 
    112                             unless ($MENTA::FINISHED) { 
    113                                 die "なにも出力してません"; 
    114                             } 
     109                            die "なにも出力してません"; 
    115110                        } else { 
    116111                            die "「${mode}」というモードは存在しません!${controller} の中に ${meth} が定義されていないようです"; 
     
    139134    if (my $err = $@) { 
    140135        die "エラー処理失敗: $err" unless ref $err eq 'HASH'; 
     136        return if $err->{finished}; 
    141137 
    142138        warn $err->{message}; 
     
    223219} 
    224220 
     221sub finish() { 
     222    die {finished => 1}; 
     223} 
     224 
    225225sub render { 
    226226    my ($tmpl, @params) = @_; 
     
    231231    print $out; 
    232232 
    233     $MENTA::FINISHED++; 
     233    finish; 
    234234} 
    235235 
     
    240240    print "\r\n"; 
    241241 
    242     $MENTA::FINISHED++; 
     242    finish; 
    243243} 
    244244 
     
    251251    print $str; 
    252252 
    253     $MENTA::FINISHED++; 
     253    finish; 
    254254} 
    255255 
     
    344344} 
    345345 
     346sub uri_for { 
     347    my ($path, $query) = @_; 
     348    my @q; 
     349    while (my ($key, $val) = each %$query) { 
     350        $val = join '', map { '%' . unpack("H2", $_) } split //, $val; 
     351        push @q, "$key=$val"; 
     352    } 
     353    docroot . $path . join('&', @q); 
     354} 
     355 
    3463561;