freeze/thaw/dclone as functions can't be made to reliably work. I'll
Michael G Schwern [Wed, 16 Jan 2008 08:17:30 +0000 (00:17 -0800)]
have to change the calling code in my app.

lib/DBIx/Class/Serialize/Storable.pm
t/84serialize.t

index 5795293..d904c0b 100644 (file)
@@ -11,13 +11,13 @@ sub STORABLE_freeze {
     delete $to_serialize->{related_resultsets};
     delete $to_serialize->{_inflated_column};
 
-    return('', $to_serialize);
+    return (Storable::freeze($to_serialize));
 }
 
 sub STORABLE_thaw {
-    my ($self, $cloning, $junk, $obj) = @_;
+    my ($self, $cloning, $serialized) = @_;
 
-    %$self = %{ $obj };
+    %$self = %{ Storable::thaw($serialized) };
     $self->result_source($self->result_source_instance)
       if $self->can('result_source_instance');
 }
index 51c7e56..0819d8c 100644 (file)
@@ -9,8 +9,11 @@ use Storable qw(dclone freeze thaw);
 my $schema = DBICTest->init_schema();
 
 my %stores = (
-    dclone          => sub { return dclone($_[0]) },
-    "freeze/thaw"   => sub { return thaw(freeze($_[0])) },
+    dclone_method          => sub { return $schema->dclone($_[0]) },
+    "freeze/thaw_method"   => sub {
+        my $ice = $schema->freeze($_[0]);
+        return $schema->thaw($ice);
+    },
 );
 
 plan tests => (7 * keys %stores);
@@ -34,6 +37,6 @@ for my $name (keys %stores) {
                   qq[serialize with related_resultset "$key"]);
     }
   
-    ok eval { $copy->discard_changes; 1 };
+    ok eval { $copy->discard_changes; 1 } or diag $@;
     is($copy->id, $artist->id, "IDs still match ");
 }