On Wed, May 13, 2009 at 04:13:06AM +0200, Sebastian Willert wrote: > On Wed, 2009-05-13 at 07:21 +0900, Daisuke Maki wrote: > > >> 2. Hooking to methods that Plugins use via method modifiers breaks > > >> method dispatch > > >> > > >> I got bit by this while depending on Catalyst::Plugin::Unicode, and > > >> trying to hook a custom error handling mechanism at finalize(). > > > > > > <snip explanation> > > > > > > Hmm, that certainally looks like a bug to me.. > > > > > > Any chance that I could get you to write a test case or two for this > > > issue? > > > > I get it now, it has to do with when setup() and method modifiers run: > > > > <snip example code> > > > > If you intend to use Moose's method modifiers in your app, do so > > /AFTER/ Catalyst->setup has been called. > > > > or some such > > First of all: thanks for the pointer, you have ended a lot of hair > pulling for me. But IMO this is not just a common gotcha but a serious > bug.
Wrong, sorry. It's an inevitable caveat. The point is that plugin setup changes the app's @ISA, so it simply isn't safe to run modifiers before ->setup, or more specifically until after ->setup_plugins. > I have a few plugins I am trying to convert to Moose::Role's that > desperately need both > before 'setup_components' > and > after 'finalize' > > This just isn't going to work one way or the other :( Fortunately, setup_plugins happens -before- setup_components so you can apply a role any time after that and it'll all work fine. > Maybe I can whip up some testcases tomorrow .. Maybe you can whip up some documentation tomorrow? Though it would be nice if modifier application before ->setup_plugins produced a warning explaining why that's bad, wrong, and not going to work. -- Matt S Trout Catalyst and DBIx::Class consultancy with a clue Technical Director and a commit bit: http://shadowcat.co.uk/catalyst/ Shadowcat Systems Limited mst (@) shadowcat.co.uk http://shadowcat.co.uk/blog/matt-s-trout/ _______________________________________________ List: Catalyst@lists.scsys.co.uk Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst Searchable archive: http://www.mail-archive.com/catalyst@lists.scsys.co.uk/ Dev site: http://dev.catalyst.perl.org/