[Moscow.pm] Дайджест списка рассылки Moscow-pm; том 31, выпуск 26

Анатолий Шарифулин sharifulin на gmail.com
Вт Май 25 00:23:40 PDT 2010


Ну все просто - похоже все-таки косяк в роутерах, $auth портится на втором
бридже, хотя не должен.
Напишите тесты и отправьте Себастьяну.

2010/5/25 Eugene Ardarov <spleenjack на gmail.com>

> Если задать второй бридж ДО роута на /gift/, то срабатывают два бриджа
> - что логично. Но вот что я сам не понял - это работает только если
> есть промежуточный роут до /about/. Вот скрипт, который не проходит
> два последних теста для роута, где нет точки до /about/ :
>
>    #!/usr/bin/env perl
>
>    use strict;
>    use warnings;
>
>    use FindBin;
>    use lib "$FindBin::Bin/lib";
>    use lib "$FindBin::Bin/../lib";
>
>    use Test::More;
>
>    use MojoX::Routes;
>    use MojoX::Routes::Match;
>    use Mojo::Transaction::HTTP;
>
>    # auth#check -> album#allow -> gift#index (with intermediate route
> to /about/)
>    my $r1 = MojoX::Routes->new;
>    my $auth1 = $r1->bridge->to('auth#check');
>    $auth1->route('/about/')->to('pref#about');
>    $auth1->bridge->to('album#allow');
>    $auth1->route('/gift/')->to('gift#index');
>
>    # auth#check -> gift#index (album#allow defined after /gift/)
>    my $r2 = MojoX::Routes->new;
>    my $auth2 = $r2->bridge->to('auth#check');
>    $auth2->route('/about/')->to('pref#about');
>    $auth2->route('/gift/')->to('gift#index');
>    $auth2->bridge->to('album#allow');
>
>    # auth#check -> gift#index (without intermediate route to
> /about/). album#allow disappeared O_o
>    my $r3 = MojoX::Routes->new;
>    my $auth3 = $r3->bridge->to('auth#check');
>    #$auth3->route('/about/')->to('pref#about');
>    $auth3->bridge->to('album#allow');
>    $auth3->route('/gift/')->to('gift#index');
>
>    my $tx = Mojo::Transaction::HTTP->new;
>    $tx->req->method('GET');
>    $tx->req->url->parse('/gift');
>
>    my $m1 = MojoX::Routes::Match->new($tx)->match($r1);
>    is($m1->stack->[0]->{controller}, 'auth');
>    is($m1->stack->[0]->{action},     'check');
>    is($m1->stack->[1]->{controller}, 'album');
>    is($m1->stack->[1]->{action},     'allow');
>    is($m1->stack->[2]->{controller}, 'gift');
>    is($m1->stack->[2]->{action},     'index');
>    is(@{ $m1->stack },               3);
>
>    my $m2 = MojoX::Routes::Match->new($tx)->match($r2);
>    is($m2->stack->[0]->{controller}, 'auth');
>    is($m2->stack->[0]->{action},     'check');
>    is($m2->stack->[1]->{controller}, 'gift');
>    is($m2->stack->[1]->{action},     'index');
>    is(@{ $m2->stack },               2);
>
>    my $m3 = MojoX::Routes::Match->new($tx)->match($r3);
>    is($m3->stack->[0]->{controller}, 'auth');
>    is($m3->stack->[0]->{action},     'check');
>    is($m3->stack->[1]->{controller}, 'album');
>    is($m3->stack->[1]->{action},     'allow');
>    is($m3->stack->[2]->{controller}, 'gift');
>    is($m3->stack->[2]->{action},     'index');
>    is(@{ $m3->stack },               3);
>
> 25 мая 2010 г. 9:11 пользователь Oleg Zhelo <oleg.zhelo на gmail.com>
> написал:
> > Что-то никак не могу никому объяснить, что меня беспокоит в этом
> > случае. Или мне кажется, что меня не понимают, или я не понимаю, что
> > мне отвечают... Короче, еще одна попытка :)
> > #!/usr/bin/perl
> > use common::sense;
> > use lib qw(../lib lib);
> > $ENV{MOJO_APP} ||= 'App';
> > use Mojolicious::Commands;
> > Mojolicious::Commands->start;
> >
> > package App;
> > use base 'Mojolicious';
> > use common::sense;
> >
> > sub startup {
> >    my $self = shift;
> >    my $r    = $self->routes;
> >    my $auth = $r->bridge->to('auth#check');
> >    $auth->route('/about/')->to('pref#about');
> >    $auth->route('/gift/')->to('gift#index');
> >    my $album = $auth->bridge->to('album#allow');
> >    $album->route('/album/create/')->to('album#create');
> > }
> > =WTF
> >        Какого хера для /gift вызывается App::Album::allow ?! Если такое
> > поведение нормально, то, на мой взгяд, bridge вообще бесполезны.
> >        Dispatching "App::Album::allow".
> >        Dispatching "App::Gift::index".
> >        А так работает:
> >    $auth->route('/gift/')->to('gift#index');
> >    my $album = $auth->bridge->to('album#allow');
> >    $album->route('/album/create/')->to('album#create');
> >        Dispatching "App::Auth::check".
> >        Dispatching "App::Gift::index".
> > =cut
> >
> > package App::Auth;
> > use base 'Mojolicious::Controller';
> >
> > sub check {
> >    1;
> > }
> >
> > package App::Album;
> > use base 'Mojolicious::Controller';
> >
> > sub allow {
> >    1;
> > }
> >
> > sub create {
> >    shift->render_text(__PACKAGE__);
> > }
> >
> > package App::Gift;
> > use base 'Mojolicious::Controller';
> >
> > sub index {
> >    shift->render_text(__PACKAGE__);
> > }
> >
> > package App::Pref;
> > use base 'Mojolicious::Controller';
> >
> > sub about {
> >    shift->render_text(__PACKAGE__);
> > }
> > 1;
> >
> > Oleg Zhelo
> >
> >
> >
> > 24 мая 2010 г. 22:01 пользователь  <moscow-pm-request на pm.org> написал:
> >> Сообщения, предназначенные для списка рассылки Moscow-pm, необходимо
> >> отправлять по адресу
> >>        moscow-pm на pm.org
> >>
> >> Для изменения параметров подписки вы можеже использовать веб-страницу
> >>        http://mail.pm.org/mailman/listinfo/moscow-pm
> >>
> >> Для получения информации о том, как пользовать почтовым интерфейсом,
> >> отправьте письмо, в теле или теме которого будет слово 'help', по
> >> адресу:
> >>        moscow-pm-request на pm.org
> >>
> >> Адрес человека, ответственного за этот список рассылки:
> >>        moscow-pm-owner на pm.org
> >>
> >> При ответе, пожалуйста, измение тему письма так, чтобы она была более
> >> содержательной чем "Re: Содержание дайджеста списка рассылки
> >> Moscow-pm..."
> >>
> >>
> >> В этом номере:
> >>
> >>   1. mojolicious баг в bridge? (Oleg Zhelo)
> >>   2. Re: mojolicious баг в bridge? (Анатолий Шарифулин)
> >>
> >>
> >> ----------------------------------------------------------------------
> >>
> >> Message: 1
> >> Date: Mon, 24 May 2010 16:51:34 +0300
> >> From: Oleg Zhelo <oleg.zhelo на gmail.com>
> >> Subject: [Moscow.pm] mojolicious баг в bridge?
> >> To: moscow-pm на pm.org
> >> Message-ID:
> >>        <AANLkTikb4al01w3j-6qPZ9TCG-e8H_-wwtsR3uW789Ih на mail.gmail.com>
> >> Content-Type: text/plain; charset=UTF-8
> >>
> >> Это баг или правильное поведение? Я так понимаю, что баг, но внятной
> >> документации нет :)
> >>  my $r    = $self->routes;
> >>  my $auth = $r->bridge->to('auth#check');
> >>  $auth->route('/about/')->to('pref#about');
> >>  my $album = $auth->bridge->to('album#allow');
> >> $album->route('/album/create/')->to('album#create');
> >> $auth->route('/gift/')->to('gift#index');
> >>
> >> /gift/
> >> auth#check -> album#allow -> gift#index
> >>
> >> ------------------------------
> >>
> >> Message: 2
> >> Date: Mon, 24 May 2010 19:43:47 +0400
> >> From: Анатолий Шарифулин <sharifulin на gmail.com>
> >> Subject: Re: [Moscow.pm] mojolicious баг в bridge?
> >> To: "Moscow.pm group" <moscow-pm на pm.org>
> >> Message-ID:
> >>        <AANLkTil5nzxVI3Hm4nSvi7PpQ3ZhPJDqN9EcKSavHNYS на mail.gmail.com>
> >> Content-Type: text/plain; charset="koi8-r"
> >>
> >> Не знаю, на сколько это баг
> >> Вот так работает http://gist.github.com/412016
> >>
> >> Нужно написать тест, тогда Себастьян исправит
> >>
> >> 2010/5/24 Oleg Zhelo <oleg.zhelo на gmail.com>
> >>
> >>> Это баг или правильное поведение? Я так понимаю, что баг, но внятной
> >>> документации нет :)
> >>>  my $r    = $self->routes;
> >>>  my $auth = $r->bridge->to('auth#check');
> >>>  $auth->route('/about/')->to('pref#about');
> >>>  my $album = $auth->bridge->to('album#allow');
> >>> $album->route('/album/create/')->to('album#create');
> >>> $auth->route('/gift/')->to('gift#index');
> >>>
> >>> /gift/
> >>> auth#check -> album#allow -> gift#index
> >>> --
> >>> Moscow.pm mailing list
> >>> moscow-pm на pm.org | http://moscow.pm.org
> >>>
> >>
> >>
> >>
> >> --
> >> С уважением,
> >> Анатолий Шарифулин.
> >> ----------- следущая часть -----------
> >> Вложение в формате HTML было извлечено&hellip;
> >> URL: <
> http://mail.pm.org/pipermail/moscow-pm/attachments/20100524/6efad2a6/attachment-0001.html
> >
> >>
> >> ------------------------------
> >>
> >> _______________________________________________
> >> Moscow-pm mailing list
> >> Moscow-pm на pm.org
> >> http://mail.pm.org/mailman/listinfo/moscow-pm
> >>
> >>
> >> Конец Дайджест списка рассылки Moscow-pm; том 31, выпуск 26
> >> ***********************************************************
> >>
> > --
> > Moscow.pm mailing list
> > moscow-pm на pm.org | http://moscow.pm.org
> >
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>



-- 
С уважением,
Анатолий Шарифулин.
----------- следущая часть -----------
Вложение в формате HTML было извлечено&hellip;
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20100525/493aac98/attachment-0001.html>


Подробная информация о списке рассылки Moscow-pm