[Moscow.pm] Дайджест списка рассылки Moscow-pm; том 31, выпуск 26
Eugene Ardarov
spleenjack на gmail.com
Вт Май 25 00:15:53 PDT 2010
Если задать второй бридж ДО роута на /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