Matt S Trout wrote:
> Christopher H. Laco wrote:
>> I while back, knee deep in Handel-DBIC magicland, I was attempting to
>> call class->load_components to inject components into a cloned schema.
>>
>> It was slow as dirt because C# kept getting reinitialized. I tried
>> several incantations of $TURN_OFF_C3 and uninitialize, and nothing
>> helped the problem.
>>
>> Then, while surfing through Schema.pm, I noticed this nugget in
>> compose_namespace:
>>
>>
>> {
>>    local *Class::C3::reinitialize = sub { };
>>    ...
>> }
>> Class::C3->reinitialize;
>>
>>
>> How curious. I suspect that if I did the same, it would work as
>> expected, rather than figthing $TURN_OF_C3.
>>
>>
>> Can the creator of this magic shed any light on the matter?
> 
> I have a feeling I went through the same contortions and then said "sod
> it" and did that before I hit homicidal. It does, indeed, appear to work.
> 

I figured as much. If it performs, I'd much prefer using load_components
instead of the symbol table hackery jiggery pokery I'm doing now.

In fact, in theory, I should be able to wrap my calls to
compose_namespace with C3::reinitialize set to an empty sub, then do my
load_compoents calls, and then call reinit myself. That should save me
the hit of compose_namespace doing a reinit too.

Thanks,
-=Chris

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
List: http://lists.rawmode.org/cgi-bin/mailman/listinfo/dbix-class
Wiki: http://dbix-class.shadowcatsystems.co.uk/
IRC: irc.perl.org#dbix-class
SVN: http://dev.catalyst.perl.org/repos/bast/trunk/DBIx-Class/
Searchable Archive: http://www.mail-archive.com/[email protected]/

Reply via email to