On Aug 2, 2007, at 2:53 PM, ry dahl wrote:
> merb_dispatcher.rb:28
> controller = klass.build(request.body, request.params, route,
> response)
> Why not just use a typical constructor?
For testability. I just recently separated this out. We need to be
able to initialize and get a controller instance before we call
parse_request to parse the request. This is so you can get an
instance of your controller in your specs and setup mocks and whatnot
before you call parse_request. build just wraps up the same
functionality into one method so it works exactly the same in
Dispacther.handle. This is just to increase testability.
>
> merb_dispatcher.rb:35
> raise Merb::HTTPMethodNotAllowed.new(method, allowed)
> Why not check for this after the action has been dispatched to the
> controller?
Because there is no valid controller/action to call if this gets
raised. It''s enforcing the rules of routing which happens before
dispatching to the controller. I''m not opposed to changing the
exception raised but this check does belong where it is IMHO.
>
> controller_mixin.rb:149
> def query_parse(qs, d = ''&;'')
> Why not offload query parsing onto Mongrel as much as possible?
Because mongrel does not have a method that parses nested parameters.
so mongrel''s query_parse will fail to parse ?foo[bar][baz]=nik but
merb''s query_parse will correctly handle it. I agree it''s a
bit
obsfuscated though ;) Could possible be merged and refactored with
normailize_params. I''ll put it on the todo list.
Cheers-
-- Ezra Zygmuntowicz
-- Founder & Ruby Hacker
-- ez at engineyard.com
-- Engine Yard, Serious Rails Hosting
-- (866) 518-YARD (9273)