読者です 読者をやめる 読者になる 読者になる

Padrino Commit Aug 09, 2013

Padrino

ujifgc Merge pull request #1378 from namusyaka/fix-broken-params

#1378のマージコミットです。

namusyaka Fix broken params.
namusyaka Add test case for #1366
post :index, :with => [:foo, :bar], :bar => /.+/ do
  params.to_s
end

get :foo, :map => '/mystuff/:a_id/boing/:boing_id' do
  params.to_s
end

上記のように、正規表現のキャプチャを含むルーティングが定義されていた場合に、
それよりも下に定義されているルーティングに到達しない不具合が修正されました。

これは、Padrino が依存している http_router の不具合なので、モンキーパッチを当てての修正になっています。
(http_router はもうメンテされていないようですし…)

修正箇所を見ると確かにバグってるよな〜というのは分かるのですが、http_router が謎過ぎて動きを追うのがつらいので、
どうやって該当箇所を発見・修正していったのか @namusyaka さんに解説して欲しいです…。

2013/08/11 追記
@namusyaka さんが解説記事を書いてくださいました!ありがとうございます!!
私は如何にしてPadrino::Routing及びhttp_routerのバグを直したか