[Dbix-class] "regression" introduced in DBIC r5298.. Or we're Doing It Wrong..

Toby Corkindale toby.corkindale at strategicdata.com.au
Tue Jun 9 01:29:53 GMT 2009


Matt S Trout wrote:
> On Wed, Jun 03, 2009 at 06:14:13PM +1000, Toby Corkindale wrote:
>> Hi guys,
>> I've encountered a regression in DBIC, introduced in revision 5298.
>> It's more than likely that the way things were being done in the code 
>> here were not correct and *shouldn't* have worked previously, but I 
>> can't seem to work it out myself.
>>
>> There's a single changed line which triggers the problem:
>> --------------------------------------------------------
>> diff --git a/lib/DBIx/Class/Schema.pm b/lib/DBIx/Class/Schema.pm
>> @@ -1228,7 +1229,7 @@ sub register_extra_source {
>>  sub _register_source {
>>    my ($self, $moniker, $source, $params) = @_;
>>
>> -  %$source = %{ $source->new( { %$source, source_name => $moniker }) };
>> +  $source = $source->new({ %$source, source_name => $moniker });
> 
> Yeah, that's a bugfix.
> 
> Basically, you can't add relationships after the fact - if you can't set up
> your relationships before the source is registered with the schema then
> you'll need to re-register it afterwards.
> 
> Slightly annoying side effect of the prototype inheritance style DBIC uses
> for schema and sources - I'm aware it's a tad annoying but things break
> subtly without it.

Is the correct way to re-register it this?

My::Schema->register_extra_source(
     Users => My::Schema->class('Users')->new->result_source_instance
);

(That seems to work at least.. trying to do register_class/source() 
again causes an error about it already existing)

thanks,
Toby



More information about the DBIx-Class mailing list