Dispatcher.to_prepare with script/server and mongrel

I am using the Dispatcher/config.to_prepare hook to configure my
application, but mongrel plays a trick with us.

The problem with running this with script/server is this:

1) Dispatcher, at line 160, sets self.preparation_callbacks = []
2) Dispatcher gets loaded twice, once by the initalizer, and once by


Since the first requires dispatcher with the full path, and the other
with just 'dispatcher', the file gets loaded twice (see footnote in
pickaxe p117). The second load happens after all environment stuff has
been loaded, and wipes our callbacks.

It looks like it works OK in production, it's just when run with

Two suggestions for fixing, which both work because we're not reloading
the Dispatcher between requests:

1) Add an "unless defined? Dispatcher" to the defining of the
Dispatcher class, or just to line 160 (which resets the
preparation_callbacks array)

2) Change Dispatcher.rb:160 to read "self.preparation_callbacks ||=
[]", so it's left alone if already defined.

Anything better?