merbでのmap.resourcesのネスト
railsよりはとても読みやすくて、構造も現状のHTTP::Routerにとても近い。
map.resourcesのbuilder部分は、以下のファイル読めばOK。
merb-core/lib/merb-core/dispatch/router/resources.rb
resource.options(:name_prefix => singular, :resource_prefix => klass_name, :parent_keys => parent_keys). match("/#{nested_keys}", nested_match_opts).resource_block(builders, &block)
- 168, 169行目で下位のresourceのblock渡して、下位のresourceの処理してる。path情報が下位のroute作るために渡されている。
- matchとかtoとかはDSLで、Behaviorに定義されてる。toメソッドでrouterのroutesにフラットにrouteインスタンスを追加していっている。だから、DSL的にはネスト構造になっているけれど、merb的にはrouteはフラットな形で管理されている。これは今のHTTP::Routerの構造にマッチしている。
routing部分に限れば、railsよりは大分よみやすい気がする。merb++