in reply to Re^3: Extensions via Moose
in thread Extensions via Moose

Hmm, the code in MooseX::Traits states
# runtime role application is fundamentally broken. if you really # need it, write it yourself, but consider applying the roles before # you create an instance.
And it is basically a call to:
$trait->meta->apply($self, rebless_params => $rebless_params || {});
So why should I be scared of Trait->meta->apply? Why would writing it myself be better than the function that appears here?

Replies are listed 'Best First'.
Re^5: Extensions via Moose
by stvn (Monsignor) on May 01, 2011 at 01:56 UTC
    Hmm, the code in MooseX::Traits states ...

    Not sure who wrote that comment, I suspect either Florian or Jonathan Rockway, I would not take that too much to heart, it is an opinion and a somewhat extreme one at that. It also may very well refer to an earlier state of that behavior, a lot of cleanup has taken place in that corner of the code base in the last few years.

    So why should I be scared of Trait->meta->apply?

    You shouldn't, but some people are scared off by the MOP (which is a good thing sometimes and a bad thing other times).

    Why would writing it myself be better than the function that appears here?

    Well, what is in MooseX::Traits has already been tested and is regularly tested against the Moose core with our smoke tester. But the code is basically just calls to Moose::Util functions, so I wouldn't worry about writing your own code too much.

    -stvn