[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 было извлечено…
> >> 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 было извлечено…
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20100525/493aac98/attachment-0001.html>
Подробная информация о списке рассылки Moscow-pm