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

&gt;&gt;<br>
&gt;&gt; ------------------------------<br>
&gt;&gt;<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; Moscow-pm mailing list<br>
&gt;&gt; <a href="mailto:Moscow-pm@pm.org">Moscow-pm@pm.org</a><br>
&gt;&gt; <a href="http://mail.pm.org/mailman/listinfo/moscow-pm" target="_blank">http://mail.pm.org/mailman/listinfo/moscow-pm</a><br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; Конец Дайджест списка рассылки Moscow-pm; том 31, выпуск 26<br>
&gt;&gt; ***********************************************************<br>
&gt;&gt;<br>
&gt; --<br>
&gt; Moscow.pm mailing list<br>
&gt; <a href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org" target="_blank">http://moscow.pm.org</a><br>
&gt;<br>
--<br>
Moscow.pm mailing list<br>
<a href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org" target="_blank">http://moscow.pm.org</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>С уважением,<br> Анатолий Шарифулин.<br>